Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 29, 2011 17:26:06

kt315e
От:
Зарегистрирован: 2009-12-27
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Удалениие элементов списка по условию.

Есть список например [, ,,,]
Необходимо удалить элементы у которых None первый элемент подсписка. Реализую через цикл записи в временный список. Но списки большие, желательно экономить память.



Офлайн

#2 Янв. 29, 2011 17:54:10

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Удалениие элементов списка по условию.

Списки - гигабайтные?



Офлайн

#3 Янв. 29, 2011 18:05:08

kt315e
От:
Зарегистрирован: 2009-12-27
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Удалениие элементов списка по условию.

Сотни мегабайт, и будут расти.



Офлайн

#4 Янв. 29, 2011 18:12:01

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Удалениие элементов списка по условию.

тогда используйте ленивости

a = [[1,2], [3,4],[None,5],[6,7],[8,9]]
c = (x for x in a if x[0])



Офлайн

#5 Янв. 29, 2011 18:24:31

kt315e
От:
Зарегистрирован: 2009-12-27
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Удалениие элементов списка по условию.

Zubchick: а что с ‘c’ дальше делать? Не понимаю я генераторов :-(



Офлайн

#6 Янв. 29, 2011 18:30:35

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Удалениие элементов списка по условию.

дальше можно либо опять использовать ленивости через itertools, либо в цикле обойти весь c

>>> a = [[1,2], [3,4],[None,5],[6,7],[8,9]]
>>> c = (x for x in a if x[0])
>>> res = (a * b for a, b in c)
>>> for i in res:
... print i
...
2
12
42
72
>>>



Офлайн

#7 Янв. 29, 2011 18:35:53

kt315e
От:
Зарегистрирован: 2009-12-27
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Удалениие элементов списка по условию.

Правильно ли я понял: К генератору можно применять ‘in’, но нельзя операцию индекcации?



Офлайн

#8 Янв. 29, 2011 18:46:03

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Удалениие элементов списка по условию.

in в смысле ‘f’ in ‘asdfghj’ применять нельзя, генератор можно обойти в цикле вытаскивая из него по одному значению, либо скомбинировать с другим генератором.



Офлайн

#9 Янв. 29, 2011 18:50:02

kt315e
От:
Зарегистрирован: 2009-12-27
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Удалениие элементов списка по условию.

Наверное я зря беспокоюсь при работе с временным списком будут создаватся только новые ссылки, а не копии подсписков. Дополнительные затраты памяти относительно небольшие.



Офлайн

#10 Янв. 29, 2011 18:51:50

kt315e
От:
Зарегистрирован: 2009-12-27
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Удалениие элементов списка по условию.

Zubchick: спасибо внесли ясность.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version