次の質問に対するJeanの回答に続いて、Python converting strings in a list to numbersの場合、最小限のコードを実行するとStopIteration
例外が発生します。ジェネレータとリストを含むPython StopIteration
primes
およびz2
は空です。
私はトレースバックで回線の周りにループが必要かもしれないと思うが、私はどのように治療するのか分からないのですか?
トレースバック: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()'を使います。 –