Python将while循环转换为生成器函数

时间:2011-09-01 13:55:25

标签: python list optimization while-loop generator

我想替换和优化广泛使用的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 :(得分:0)

你可以用发电机做到这一点。每次调用“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()