Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 13, 2014 12:13:21

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Использования промежуточных значений в генераторах

PooH
Разуйте глаза,
lines = (line for line in open('/some/file'))
splited_lines = (line.split() for line in lines)

splited_lines = (line.split() for line in open('/some/file'))



Офлайн

#2 Авг. 13, 2014 12:23:59

scopichol
Зарегистрирован: 2014-08-04
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Использования промежуточных значений в генераторах

Что не годится? Разуйте глаза, там нет списков, там генераторы, список появляется в последний момент из уже отфильтрованных данных.
Разул. Согласен.

Офлайн

#3 Авг. 13, 2014 18:08:26

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Использования промежуточных значений в генераторах

Почему-то никто не вспомнил о yield.

Офлайн

#4 Авг. 13, 2014 20:18:51

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Использования промежуточных значений в генераторах

Shaman
Почему-то никто не вспомнил о yield.
У тс список.



Офлайн

#5 Авг. 13, 2014 20:54:15

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Использования промежуточных значений в генераторах

Budulianin
У тс список.
Не понял. Какая разница?
Берём твой код и чуть его модифицируем
def gen(arg):
    for line in arg:
        line_sp = line.split()
        if line_sp[2] == 'var1' and line_sp[3] == 'var2':
            yield line_sp[2:]

Теперь его можно использовать в двух вариантах:
text = '''aaaa bbbb cccc dddd
aaaa bbbb var1 var2'''.split('\n')
# case 1
print [i for i in gen(text)]
# case 2
for i in gen(text):
    print i

Отредактировано Shaman (Авг. 13, 2014 21:20:50)

Офлайн

#6 Авг. 13, 2014 22:27:09

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Использования промежуточных значений в генераторах

Shaman
Не понял. Какая разница?

Если так
[i for i in gen(text)]
, то никакой.



Офлайн

#7 Авг. 14, 2014 15:19:59

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Использования промежуточных значений в генераторах

На таких yield генераторах вся стандартная библиотека зиждется.

Офлайн

#8 Авг. 14, 2014 17:05:28

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Использования промежуточных значений в генераторах

Shaman
На таких yield генераторах вся стандартная библиотека зиждется.
И ?



Офлайн

#9 Авг. 14, 2014 17:16:08

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Использования промежуточных значений в генераторах

Значит в них что-то есть.

Офлайн

#10 Авг. 14, 2014 17:22:18

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Использования промежуточных значений в генераторах

Shaman
Значит в них что-то есть.
:)
Просто память экономят.
Если можно использовать генератор, то лучше использовать генератор.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version