簡單來講a[:]
是深復制,a
是淺復制,相當于賦值a
的話是賦值了指針,賦值a[:]
相當于復制了a
對應的那段空間
例如:
a = [1,1,1,1,1,1]for x in a:if x==1:a.remove(x)print(a)
運行結果:
remove
操作是移除序列中第一個x
元素。
這顯然不是我們想要看到的結果,在上面這種操作中我們移除的其實是前三個元素
解決方法就是:
a = [1,1,1,1,1,1]for x in a[:]:if x==1:a.remove(x)print(a)
運行結果:
當我們使用a[:]時,我們在循環中訪問的其實是a
的一個副本,這個副本和a
中的內容完全相同,所以我們可以在a
已經修改的情況下進行remove
操作。