首先,让我们来看一下错误做法
# 将my_color列表复制给your_color列表的错误做法 my_color = ['red', 'yellow', 'blue'] your_color = my_color print(your_color)
再来看一下运行结果:
['red', 'yellow', 'blue']
看起来好像没什么问题,我们对上述程序进行简单测试:
# 将my_color列表复制给your_color列表的错误做法 my_color = ['red', 'yellow', 'blue'] your_color = my_color print(your_color) # 对my_color列表进行简单修改,弹出列表最后一个元素 my_color.pop() # 分别打印出my_color和your_color列表 print(my_color) print(your_color)
运行结果如下,我们发现,对my_color列表进行修改,your_color列表也随之改变
['red', 'yellow', 'blue'] ['red', 'yellow'] ['red', 'yellow']
显然,对于your_color = my_color,是将my_color赋给your_color,而不是将my_color的副本赋给your_color。即原理如下所示,这两个变量指向同一个列表:
那如何正确进行列表的复制呢?可采用切片表示法[ : ]创建列表的副本
# 将my_color列表复制给your_color列表的正确做法 my_color = ['red', 'yellow', 'blue'] your_color = my_color[:] print(your_color) # 对my_color列表进行简单修改,弹出列表最后一个元素 my_color.pop() # 分别打印出my_color和your_color列表 print(my_color) print(your_color)
打印输出结果如下;
['red', 'yellow', 'blue'] ['red', 'yellow'] ['red', 'yellow', 'blue']
结果表明,对my_color列表进行修改,不影响your_color列表,这里是将my_color的副本赋给your_color。即原理如下所示,这两个变量分别指向两个列表:



