天天看点

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]

继续阅读