Фильтр создаст новый список, поэтому, если ваш оригинал очень большой, вы можете использовать в два раза больше памяти.
Если вам нужно только обрабатывать результаты итеративно, а не использовать его в качестве реального списка произвольного доступа, вам, вероятно, лучше использовать
вместо этого. то есть.
for x in itertools.ifilter(condition_func, my_really_big_list):
do_something_with(x)
Другими советами по скорости является использование встроенной функции Python, а не функции, которую вы пишете сами. Там есть itertools.ifilterfalse специально для
случай, когда в противном случае вам нужно будет ввести лямбду, чтобы аннулировать ваш чек. (например, «ifilter (lambda x: not x.isalpha (), l)» следует написать «ifilterfalse (str.isalpha, l)»)