kt315e
Янв. 29, 2011 17:26:06
Есть список например [, ,,,]
Необходимо удалить элементы у которых None первый элемент подсписка. Реализую через цикл записи в временный список. Но списки большие, желательно экономить память.
Андрей Светлов
Янв. 29, 2011 17:54:10
Списки - гигабайтные?
kt315e
Янв. 29, 2011 18:05:08
Сотни мегабайт, и будут расти.
Zubchick
Янв. 29, 2011 18:12:01
тогда используйте ленивости
a = [[1,2], [3,4],[None,5],[6,7],[8,9]]
c = (x for x in a if x[0])
kt315e
Янв. 29, 2011 18:24:31
Zubchick: а что с ‘c’ дальше делать? Не понимаю я генераторов :-(
Zubchick
Янв. 29, 2011 18:30:35
дальше можно либо опять использовать ленивости через 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
>>>
kt315e
Янв. 29, 2011 18:35:53
Правильно ли я понял: К генератору можно применять ‘in’, но нельзя операцию индекcации?
Zubchick
Янв. 29, 2011 18:46:03
in в смысле ‘f’ in ‘asdfghj’ применять нельзя, генератор можно обойти в цикле вытаскивая из него по одному значению, либо скомбинировать с другим генератором.
kt315e
Янв. 29, 2011 18:50:02
Наверное я зря беспокоюсь при работе с временным списком будут создаватся только новые ссылки, а не копии подсписков. Дополнительные затраты памяти относительно небольшие.
kt315e
Янв. 29, 2011 18:51:50
Zubchick: спасибо внесли ясность.