Maison  >  Questions et réponses  >  le corps du texte

python简单的问题,智商不够用了。。。

为何遍历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

PHPzPHPz2741 Il y a quelques jours458

répondre à tous(2)je répondrai

  • 天蓬老师

    天蓬老师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

    répondre
    0
  • 黄舟

    黄舟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[:]

    répondre
    0
  • Annulerrépondre