天天看點

python中的分片拷貝

首先先看下面的代碼;

list1=[1,2,3,4,5,6]
list2=list1[:]
list3=list1
print(list2)
print(list3)
           

這段程式的輸出為;

[1, 2, 3, 4, 5, 6]

[1, 2, 3, 4, 5, 6]

從輸出結果來看,好像是一樣的,but…如果做以下修改呢?

list1=[1,2,3,4,5,6]
list2=list1[:]
list3=list1
list1.reverse()    # sort 正向排序    reverse 逆向排序
print(list2)
print(list3)
           

這段程式的輸出結果為:

[1, 2, 3, 4, 5, 6]

[6, 5, 4, 3, 2, 1]

看到沒!是不是不一樣了?但是這是為什麼呢?

因為為一個清單指定另一個名字的做法,隻是向同一個清單增加一個新的标簽而已,真正的拷貝是要使用分片的方法或copy()方法,copy()方法見一下例子。

list1=[1,2,3,4,5,6]
list2=list1[:]
list3=list1
list4=list1.copy()
list1.reverse()
print(list2)
print(list3)
print(list4)
           

輸出:

[1, 2, 3, 4, 5, 6]

[6, 5, 4, 3, 2, 1]

[1, 2, 3, 4, 5, 6]

繼續閱讀