Форум сайта python.su
Есть список например [, ,,,]
Необходимо удалить элементы у которых None первый элемент подсписка. Реализую через цикл записи в временный список. Но списки большие, желательно экономить память.
Офлайн
Списки - гигабайтные?
Офлайн
Сотни мегабайт, и будут расти.
Офлайн
тогда используйте ленивости
a = [[1,2], [3,4],[None,5],[6,7],[8,9]]
c = (x for x in a if x[0])
Офлайн
Zubchick: а что с ‘c’ дальше делать? Не понимаю я генераторов :-(
Офлайн
дальше можно либо опять использовать ленивости через 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
>>>
Офлайн
Правильно ли я понял: К генератору можно применять ‘in’, но нельзя операцию индекcации?
Офлайн
in в смысле ‘f’ in ‘asdfghj’ применять нельзя, генератор можно обойти в цикле вытаскивая из него по одному значению, либо скомбинировать с другим генератором.
Офлайн
Наверное я зря беспокоюсь при работе с временным списком будут создаватся только новые ссылки, а не копии подсписков. Дополнительные затраты памяти относительно небольшие.
Офлайн
Zubchick: спасибо внесли ясность.
Офлайн