Eines Tages, als ich Python-Code schrieb, passierte etwas Seltsames ...
x = [1, 2, 3, 4, 5]
for i in x:
x.remove(i)
print(x)
>>>
[2, 3, 4, 5] #Verstehen
[2, 4, 5] # ???Wenn Sie 1 und 2 herausziehen[3, 4, 5]Dann!?!?
[2, 4] # ???????
Übrigens war es das gleiche, als ich es mit Rubin versuchte.
x = [1, 2, 3, 4, 5]
for i in x do
x.delete(i)
print(x)
end
>>>
[2, 3, 4, 5][2, 4, 5][2, 4] => [2, 4]
Hallo, "für i in x" bedeutet
Es scheint, dass es versucht, jedes Mal, wenn die Schleife wiederholt wird, auf die 0, 1, 2, ..., n-ten von x zu verweisen.
Es ist gut, die Liste mit [:] oder copy () zu kopieren.
x = [1, 2, 3, 4, 5]
for i in x[:]:
x.remove(i)
print(x)
>>>
[2, 3, 4, 5]
[3, 4, 5]
[4, 5]
[5]
[]
from copy import copy
x = [1, 2, 3, 4, 5]
for i in copy(x):
x.remove(i)
print(x)
>>>
[2, 3, 4, 5]
[3, 4, 5]
[4, 5]
[5]
[]
Ich war ungefähr 30 Minuten besorgt, "Hmm, hmm ...". Wenn Sie es mit numpy drücken, werden Sie durch die destruktive Methode der Standardliste verwirrt ...
Recommended Posts