python每日练习—2020.2.21
【问题描述】 将一个列表的数据复制到另一个列表中。
【程序分析】: 使用列表[:],调用copy模块。
import copy
a = [1,2,3,4,['a','b']]
b = a
c = a[:]
d = copy.copy(a)
e = copy.deepcopy(a)
a.append(5)
a[4].append('c')
print('a = ',a)
print('b = ',b)
print('c = ',c)
print('d = ',d)
print('e = ',e)
a = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c = [1, 2, 3, 4, ['a', 'b', 'c']]
d = [1, 2, 3, 4, ['a', 'b', 'c']]
e = [1, 2, 3, 4, ['a', 'b']]
有没有感到很神奇,在我看到这段代码的时候要也感到很神奇。
我们都知道b = a
是赋值操作,所以b的值永远会和a的值相同,但是[ : ]
以及copy( )
不会在操作a[4].append('c')
后修改掉本身的值,而deepcopy()
更是纹丝不动,像极了元组。。
如果有谁能够解释这一现象,请告诉小编,在此予以感谢