0
我想要替换和优化从输入列表生成列表值的广泛使用的while循环。如何用iter,itertools,生成器函数或其他东西来实现?以下示例代码仅用于说明:Python将while循环转换为生成器函数
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
你的示例代码引发'IndexError:列表索引超出range'的。可能是因为你在内部和外部重复使用相同的“索引”。 – MattH
而内部'while'结束条件永远不会被满足。 – MattH
生成器的基本思想:将其放入函数库(块)中,并将'output_list.append(value)'改为'yield value'。 –