以下是Jean对我的问题的回答:Python converting strings in a list to numbers,运行以下最小代码时出现StopIteration
异常。python带有生成器和列表的StopIteration
primes
和z2
是空的。
从谷歌搜索我想我可能需要一个while循环周围的追溯线,但我不知道如何补救?
回溯:在CSV文件
File "factorise_v32.py", line 118, in factorise
primes=[next(z2) for _ in xrange(b)]
StopIteration
的样本数据:
("2","3","5","7","11")
最少的代码:
import csv
def factorise(N)
....
z1=(int(x) for row in csv.reader(csvfile) for x in row)
....
b=4 #b can be any positive integer
z2=(int(x) for row in csv.reader(csvfile) for x in row)
primes=[next(z2) for _ in xrange(b)]
'next()'引发异常,因为'z2'已用尽。 'z2'中没有'b'元素。 –
@MartijnPieters不会处理'StopIteration'以终止理解? – schwobaseggl
为什么不直接在* z2上迭代*?使它成为列表理解,或者如果你想获得有限数量的元素,可以使用'slice()'。 –