无意间发现列表类型这样的现象,希望大家提出自己的看法,以下是代码,很简单
#-------Code start---------------------#
import string
list3 = ['aa', 'bb', 'cc', ['qq', 'ww', 'ee', 'rr'], 'dd']
list4 = list3
print 'list4>;>;>;', list4
list3.pop(0)
print 'list3>;>;>;', list3
print 'list4>;>;>;', list4
list3 = ['aa', 'bb', 'cc', ['qq', 'ww', 'ee', 'rr'], 'dd']
list4 = list3
print 'list4>;>;>;', list4
list3[3].pop(0)
print 'list3>;>;>;', list3
print 'list4>;>;>;', list4
list3 = ['aa', 'bb', 'cc', ['qq', 'ww', 'ee', 'rr'], 'dd']
list4 = list3[:]
print 'list4>;>;>;', list4
list3.pop(0)
print 'list3>;>;>;', list3
print 'list4>;>;>;', list4
list3 = ['aa', 'bb', 'cc', ['qq', 'ww', 'ee', 'rr'], 'dd']
list4 = list3[:]
print 'list4>;>;>;', list4
list3[3].pop(0)
print 'list3>;>;>;', list3
print 'list4>;>;>;', list4
#-------Code start---------------------#
运行结果:
list4>;>;>; ['aa', 'bb', 'cc', ['qq', 'ww', 'ee', 'rr'], 'dd']
list3>;>;>; ['bb', 'cc', ['qq', 'ww', 'ee', 'rr'], 'dd']
list4>;>;>; ['bb', 'cc', ['qq', 'ww', 'ee', 'rr'], 'dd']
list4>;>;>; ['aa', 'bb', 'cc', ['qq', 'ww', 'ee', 'rr'], 'dd']
list3>;>;>; ['aa', 'bb', 'cc', ['ww', 'ee', 'rr'], 'dd']
list4>;>;>; ['aa', 'bb', 'cc', ['ww', 'ee', 'rr'], 'dd']
list4>;>;>; ['aa', 'bb', 'cc', ['qq', 'ww', 'ee', 'rr'], 'dd']
list3>;>;>; ['bb', 'cc', ['qq', 'ww', 'ee', 'rr'], 'dd']
list4>;>;>; ['aa', 'bb', 'cc', ['qq', 'ww', 'ee', 'rr'], 'dd']
list4>;>;>; ['aa', 'bb', 'cc', ['qq', 'ww', 'ee', 'rr'], 'dd']
list3>;>;>; ['aa', 'bb', 'cc', ['ww', 'ee', 'rr'], 'dd']
list4>;>;>; ['aa', 'bb', 'cc', ['ww', 'ee', 'rr'], 'dd']
从结果来看,由于赋值方式不同,删除列表中的元素时也出现不同的情况。
原以为 list4=list3[:]这样的赋值后list4就与list3没有任何关系了,看来不是这样的。对于深副表的操作不管是用什么方法赋值都是对list3和list4起同样做作的。 |