文章詳情頁
python簡單的問題,智商不夠用了。。。
瀏覽:127日期:2022-08-28 15:26:47
問題描述
為何遍歷a只遍歷3次?智商不夠了,list里最后一個為何沒遍歷到?智商不夠了。。。
a = ['asd_1','asd_2','3','4']b = afor i in a: print(i) if i.find(’asd_’) < 0:b.remove(i)
輸出:asd_1asd_23
問題解答
回答1:因為列表上可變對象啊,a和b其實只想的是同一個地址,在b上面remove會影響a的迭代,不信你把a打印出來看
a = ['asd_1', 'asd_2', '3', '4']b = afor i in a: print(i) if i.find(’asd_’) < 0:b.remove(i)print a
輸出:
asd_1asd_23[’asd_1’, ’asd_2’, ’4’]
這時a的長度已經變成3了
回答2:上面的代碼,b只是a的引用,你修改了b,a也被修改了,直接影響了a的迭代.
你可以試試
b = a.copy()
或者
b = a[:]
排行榜
