Maison > Questions et réponses > le corps du texte
为何遍历a只遍历3次?智商不够了,list里最后一个为何没遍历到?智商不够了。。。
a = ["asd_1","asd_2","3","4"]
b = a
for i in a:
print(i)
if i.find('asd_') < 0:
b.remove(i)
输出:
asd_1
asd_2
3
天蓬老师2017-04-18 10:28:17
En raison des objets mutables dans la liste, a et b ne veulent en fait que la même adresse. Supprimer sur b affectera l'itération de a. Si vous ne me croyez pas, imprimez a et voyez
.a = ["asd_1", "asd_2", "3", "4"]
b = a
for i in a:
print(i)
if i.find('asd_') < 0:
b.remove(i)
print a
Sortie :
asd_1
asd_2
3
['asd_1', 'asd_2', '4']
À ce moment, la longueur de a est devenue 3
黄舟2017-04-18 10:28:17
Dans le code ci-dessus, b est juste une référence à a. Si vous modifiez b, a sera également modifié, ce qui affecte directement l'itération de a.
Vous pouvez l'essayer
b = a.copy()
ou
b = a[:]