Не охота изобретать велосипед, подскажите, есть ли в стандартной библиотеке функция, которая из списка
l=
сделает
l=
l = [(1,2,3,4), 5,6,7,((8,9),(10,11,12))]
l2 = ([3,4,5], [1, [[[[5,9], 99], 81], 54, 56], 31], 88)
out = []
def parse(item):
try:
iter(item)
for i in item:
parse(i)
except TypeError:
out.append(item)
#test:
parse(l)
print out # [1,2,3,4,5,6,7,8,9,,10,11,12]
out = []
parse(l2)
print out # [3, 4, 5, 1, 5, 9, 99, 81, 54, 56, 31, 88]
Piton23Да это понятно, но ведь велосипед же!
Не знаю как там насчет библиотечных функций, но обработка то простая, обычная рекурсия в 7 строк.
Код, с условием что все элементы целочисленные или флоат, обрабатывает любые вложенные списки и кортежиl = [(1,2,3,4), 5,6,7,((8,9),(10,11,12))]
l2 = ([3,4,5], [1, [[[[5,9], 99], 81], 54, 56], 31], 88)
out = []
def parse(item):
try:
iter(item)
for i in item:
parse(i)
except TypeError:
out.append(item)
#test:
parse(l)
print out # [1,2,3,4,5,6,7,8,9,,10,11,12]
out = []
parse(l2)
print out # [3, 4, 5, 1, 5, 9, 99, 81, 54, 56, 31, 88]
def chain(iterable):
for it in iterable:
if isinstance(it, (list, tuple)):
for i in chain(it):
yield i
else:
yield it
l = map(int, re.findall('\d+', str(l))
asdf
У меня похожий вопрос. Есть ли стандартная функция для вставки елемента в list с определенным шагом?
>>> list =[1,2,3]
>>> list[2:]
[3]
>>> list[:2]
[1, 2]
>>>
>>>
>>> for i in xrange(len(list)):
... list = list[:2*i] + [i] + list[2*i:]
...
>>> print list
[0, 1, 1, 2, 2, 3]
>>>
asdfНет
У меня похожий вопрос. Есть ли стандартная функция для вставки елемента в list с определенным шагом?