Например для оптимизации такого генератора:
data = [line.split()[2:] for line in open('/some/file') if line.split()[2] == 'var1' and line.split()[3] == 'var2']
data = [line.split()[2:] for line in open('/some/file') if line.split()[2] == 'var1' and line.split()[3] == 'var2']
lines = (line for line in open('/some/file')) splited_lines = (line.split() for line in lines) data = [x[2:] for x in splited_lines if x[2] == 'var1' and x[3] == 'var2']
agrynНет. Нужно понимать, что list comprehensions, созданы не для таких извращений.
Есть ли в генераторах возможность сохранять некоторое промежуточное значение?
data = [] for line in open('/some/file’): line_sp = line.split() if line_sp[2] == 'var1' and line_sp[3] == ‘var2’: data.append(line_sp[2:])
PooHСогласен с Вами, только я бы так написал:
Записать по кускам? Заодно и более читаемо
lines = map(str.split, open("/some/file")) data = [x[2:] for x in lines if x[2:4] == ('var1', 'var2')]
pyuserУ вас уже в первой строке создается список, в моем варианте везде генераторы, список создается только в конце. Теперь представим что в файле 10050 строк и их них десяток нужных, как у нас потрблением памяти?
Согласен с Вами, только я бы так написал:lines = map(str.split, open("/some/file")) data = [x[2:] for x in lines if x[2:4] == ('var1', 'var2')]
>>> [0, 1] == (0,1) 2: False
PooHВ третьем вроде же нет?
У вас уже в первой строке создается список
FishHookСтранное замечание, если учесть, что у pyuser всего две строчки :)
В третьем вроде же нет?
Записать по кускам? Заодно и более читаемоНикуда не годится.
lines = (line for line in open('/some/file'))
splited_lines = (line.split() for line in lines)
data = [x for x in splited_lines if x == ‘var1’ and x == ‘var2’]
Нет. Нужно понимать, что list comprehensions, созданы не для таких извращений.Полностью согласен.
Пишите код для людей.
FishHook
В третьем вроде же нет?
PooHБлин, только дошло - речь про третий питон :) ага, в третьем итератор, но ТС про вторую ветку спрашивает
FishHook
В третьем вроде же нет?
Странное замечание, если учесть, что у pyuser всего две строчки :)
scopicholЧто не годится? Разуйте глаза, там нет списков, там генераторы, список появляется в последний момент из уже отфильтрованных данных.
Никуда не годится.
Это ж работа с файлом. Какие списки.