Форум сайта python.su
0
Добрый день!!!
У меня имеется список
my_list = [['define', , ['if', , ‘1’, ['*', ‘n’, ['fac', ]]]]]
И мне необходимо пройтись по этому списку и вывести его вот так.
define fac n
___if zero? n
______1
______* n fac - n 1
Подскажите, пожалуйста, как это сделать!!
Отредактировано cska63 (Окт. 8, 2012 10:15:08)
Офлайн
568
А откуда такой список взялся?
Офлайн
0
FishHookmy_list= str(nestedExpr('(', ‘)’).parseString(txt))
А откуда такой список взялся?
Офлайн
253
Может мой велосипед вам поможет?
import numpy as np def IterFlatten(iterable): u"""итератор по вложенным перечисляемым объектам >>> [i for i in IterFlatten([1,34.5,2,3,[[],[6,7,{'a':'b','c':'d'}]]])] [1, 34.5, 2, 3, 6, 7, 'a', 'c']""" if type(iterable) is np.matrix: iterable=np.array(iterable) if hasattr(iterable,"__iter__"): for seq in iterable: for e in IterFlatten(seq): yield e else: yield iterable def Flatten(iterable,level=None): u"""удаление внутренней структуры у списков >>> Flatten([1,34.5,2,3,[[],[6,7,{'a':'b','c':'d'}]]]) [1, 34.5, 2, 3, 6, 7, 'a', 'c']""" return list(IterFlatten(iterable))
Отредактировано doza_and (Окт. 8, 2012 20:56:18)
Офлайн
43
так попроще, наверное, если только списки
f = lambda ls: reduce(lambda res, x: res+[x] if not isinstance(x,list) else res + f(x),ls,[])
f([['define', ['if', '1', ['*', 'n', ['fac', ]]]]]) Out[3]: ['define', 'if', '1', '*', 'n', 'fac']
Офлайн
0
sergeek
так попроще, наверное, если только списки
Офлайн
43
f(x) это та самая функция и как бы сама себя вызывает, когда встречает список. И так лучше не надо писать на самом деле.
Офлайн