Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 7, 2012 05:40:46

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Напомните про списки

Не охота изобретать велосипед, подскажите, есть ли в стандартной библиотеке функция, которая из списка
l=
сделает
l=



Офлайн

#2 Фев. 7, 2012 07:21:49

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

Напомните про списки

Не знаю как там насчет библиотечных функций, но обработка то простая, обычная рекурсия в 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]

Офлайн

#3 Фев. 7, 2012 08:15:18

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Напомните про списки

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]
Да это понятно, но ведь велосипед же!



Офлайн

#4 Фев. 7, 2012 08:20:54

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Напомните про списки

Обработка любых вложенных списков или кортежей без учета типа данных

def chain(iterable):
for it in iterable:
if isinstance(it, (list, tuple)):
for i in chain(it):
yield i
else:
yield it



Офлайн

#5 Фев. 7, 2012 21:49:39

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Напомните про списки

Гы :)

l = map(int, re.findall('\d+', str(l))



Офлайн

#6 Фев. 8, 2012 05:56:39

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

Напомните про списки

:) нестандартный подход

Офлайн

#7 Фев. 12, 2012 19:13:38

asdf
От:
Зарегистрирован: 2012-02-12
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Напомните про списки

У меня похожий вопрос. Есть ли стандартная функция для вставки елемента в list с определенным шагом?



Офлайн

#8 Фев. 12, 2012 20:09:36

Spectral
От:
Зарегистрирован: 2010-07-13
Сообщения: 51
Репутация: +  1  -
Профиль   Отправить e-mail  

Напомните про списки

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]
>>>
Почему самому не написать такое?



Офлайн

#9 Фев. 12, 2012 21:59:13

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Напомните про списки

asdf
У меня похожий вопрос. Есть ли стандартная функция для вставки елемента в list с определенным шагом?
Нет



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version