Python преобразует цикл while в функцию генератора - PullRequest
0 голосов
/ 01 сентября 2011

Я хочу заменить и оптимизировать широко используемый цикл while, который генерирует значения списка из списка ввода.Как это можно сделать с помощью iter, itertools, функции генератора или чего-то еще?Следующий пример кода предназначен только для иллюстрации:

thislist = [2, 8, 17, 5, 41, 77, 3, 11]

newlist = []

index = 0
listlength = len(thislist)

while index < listlength:
    value = 0
    while thislist[index] >= 0:
        value += thislist[index]
        value += 2 * value
        index += 1
    value += thislist[index]
    index += 1
    newlist.append(value)

print newlist

1 Ответ

0 голосов
/ 01 сентября 2011

Вы можете сделать это с генератором.Он возвращает следующее значение каждый раз, когда вы вызываете «next» для него.

def my_gen(data):
    for index in range(0, len(data)-1):
        value = data[index]
        value += 2 * value
        #etc
        yield value

my_list = [2, 8, 17, 5, 41, 77, 3, 11]
x = my_gen(my_list)
print x.next()
print x.next()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...