python简单的问题,智商不够用了。。。
PHPz
PHPz 2017-04-18 10:26:17
0
2
496

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

PHPz
PHPz

学习是最好的投资!

全部回覆(2)
Peter_Zhu

因為列表上可變物件啊,a和b其實只想的是同一個位址,在b上面remove會影響a的迭代,不信你把a印出來看

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

輸出:

asd_1
asd_2
3
['asd_1', 'asd_2', '4']

這時a的長度已經變成3了

黄舟

上面的程式碼,b只是a的引用,你修改了b,a也被修改了,直接影響了a的迭代.

你可以試試

b = a.copy()

b = a[:]
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板