条件が真であるときにリストから項目を削除しようとしていて、リストの最初からもう一度繰り返します。以下は、私のコードです:だから例えば、x
リストの私の最初の項目は1であり、zもあると言うことができます リストから項目を条件付きで削除し、最初からPythonループまで繰り返します。
from random import randint
x = [1,2,3,4,5]
for item in x:
print("item is " + str(item))
z = randint(1, 5)
print("z is " + str(z))
if z == item:
x[:] = [item for item in x if item != z]
print("Remaining list is " + str(x))
else:
print("Remaining list is " + str(x))
1.
z == item
は、私の
x
リストは、(1)最初の項目を削除し、に更新されます場合には[2,3,4,5]。しかし、私は次のような出力が得られます。
item is 1
z is 1
Remaining list is [2, 3, 4, 5]
item is 3
z is 2
Remaining list is [2, 3, 4, 5]
の代わりに私の最近更新され、リスト内の2からループを再起動し、[2,3,4,5]、ループは私がどのように3である第二の位置から開始しますリストが更新されるたびに、最初からループを再開しますか? ありがとう!
反復処理中にリストのサイズを変更すると、off-by-oneエラーが多数発生します。代わりに、新しいリストを作成し、ループの最後に古いリストを置き換えます。 –