为何遍历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_1asd_23
学习是最好的投资!
因為列表上可變物件啊,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[:]
因為列表上可變物件啊,a和b其實只想的是同一個位址,在b上面remove會影響a的迭代,不信你把a印出來看
輸出:
這時a的長度已經變成3了
上面的程式碼,b只是a的引用,你修改了b,a也被修改了,直接影響了a的迭代.
你可以試試
或