python中复制列表而不改变原列表的几种方法
1、如图,通过将列表cities1的值赋值给新列表cities2,得到两个完全一样的列表,看起来并没有什么问题。代码示例如下:
cities1 = ["Guangzhou","Beijing","Shanghai","Nanjing"]
cities2 = cities1
print(cities1)
print(cities2)
2、接着我们对产生的新列表cities2进行添加元素的操作,再打印新旧列表时,发现新旧列表都发生了相同的改变。代码示例如下:
cities2.append("Kunming")
print(cities1)
print(cities2)
3、然后我们再对旧列表cities1进行插入新元素的操作,然而再次打印新旧列表时会发现,新旧列表仍然发生了相同的改变。代码示例如下:
cities1.insert(1,"Xiamen")
print(cities1)
print(cities2)
4、综上所述可以得知,通过直接赋值方式得到的新列表会跟原列表一样,同时对新列表或者旧列表的任何操作都会同步到旧列表或者新列表。
接下来介绍几种方法,创建新列表但使其不与旧列表同步。
1、使用切片方法复制,比直接赋值多了[:]。代码示例如下:
cities1 = ["Guangzhou","Beijing","Shanghai","Nanjing"]
cities2 = cities1[:]
print(cities1)
print(cities2)
2、使用切片方法复制后,如果对新列表进行添加元素的操作,再打印新旧列表时发现,新列表的操作并没有影响原列表。完整代码示例如下:
cities1 = ["Guangzhou","Beijing","Shanghai","Nanjing"]
cities2 = cities1[:]
cities2.append("Kunming")
print(cities1)
print(cities2)
3、使用切片方法复制后,如果对旧列表进行插入元素的操作,再打印新旧列表时发现,旧列表的操作并没有影响新列表。完整代码示例如下:
cities1 = ["Guangzhou","Beijing","Shanghai","Nanjing"]
cities2 = cities1[:]
cities1.insert(1,"Xiamen")
print(cities1)
print(cities2)
1、也可使用list.copy()的方法复制新列表,这种方式产生的新列表跟原列表也是完全分离的。代码示例如下:
cities1 = ["Guangzhou","Beijing","Shanghai","Nanjing"]
cities2 = cities1.copy()
cities1.insert(1,"Xiamen")
print(cities1)
print(cities2)
1、还可使用for循环的方法复制新列表,这种方式产生的新列表跟原列表同样是完全分离的。代码示例如下:
cities1 = ["Guangzhou","Beijing","Shanghai","Nanjing"]
cities2 = [i for i in cities1]
cities2.append("Kunming")
print(cities1)
print(cities2)