我想替换和优化广泛使用的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
答案 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()