it
をpythonの反復可能な要素としましょう。 it
以上のループ内でit
が変更された場合はどうなりますか?それとももっと簡単です:この作品のようなものはいつですか?ループ中に繰り返し可能な変数を変更する
it = range(6)
for i in it:
it.remove(i+1)
print i
0,2,4が印刷されます(ループが3回実行されることを示します)。一方
を出力する
it = range(6)
for i in it:
it = it[:-2]
print it
リードん
[0,1,2,3]
[0,1]
[]
[]
[]
[],
ループを示すが6回実行されます。私は、インプレース操作や可変スコープと関係があると思いますが、100%確実に私の頭を包み込むことはできません。
Clearification:動作しません
一例として、:
it = range(6)
for i in it:
it = it.remove(i+1)
print it
がスローされる(NoneTypeは何の属性 '削除' を持っていない)印刷されている 'なし' とエラーにつながります。
2番目の例では、** iterableを変更していない**(iterableでなく、どちらもiterableではありません)。 –
参考:http://stackoverflow.com/questions/9884132/what-exactly-are-pythons-iterator-iterable-and-iteration-protocols?noredirect=1&lq=1 – ecatmur