我们经常需要根据已有列表来创建全新的列表,下面来介绍列表复制的工作原理。
<1>原理
要复制列表,首先需要创建一个包含整个列表的切片,方法是同时省略起始和终止索引([:]),即让python创建一个始于第一个元素,终止于最后一个元素的切片,便可复制整个切片。
例:将‘myFoods’复制给‘friendFoods’。
#Copy List1
myFoods=['rice','water','meat']
friendFoods=myFoods[:]
myFoods.append('ice-cream')
friendFoods.append('fruit')
print('myFoods:')
print(myFoods)
运行结果:
myFoods:
['rice', 'water', 'meat', 'ice-cream']
friendFoods:
['rice', 'water', 'meat', 'fruit']
注意: 关键一步为
friendFoods=myFoods[:]
<2>注意
若将friendFoods=myFoods[:]
改为
friendFoods=myFoods
则整个程序变为:
#Copy List2
myFoods=['rice','water','meat']
friendFoods=myFoods
myFoods.append('ice-cream')
friendFoods.append('fruit')
print('myFoods:')
print(myFoods)
则运行结果为:
myFoods:
['rice', 'water', 'meat', 'ice-cream', 'fruit']
friendFoods:
['rice', 'water', 'meat', 'ice-cream', 'fruit']
可发现,对myFoods和friendFoods的操作同时增加了二者的列表元素,说明方法二是将myFoods的地址传递给了friendFoods(即关联到了一起),所以改变列表一的值也会改变列表二。而方法一是将myFoods的副本传递给了friendFoods,二者在第一次复制完后,不再相互干扰,干干净净清清爽爽。