Python中五种列表拷贝的方法
在Python中,列表是一种非常常用的数据类型,用于存储一组有序的元素。在编程中,我们经需要对列表进行拷贝操作。本文将详细介绍Python中五种列表拷贝的方法,包括浅拷贝和深拷贝以及方法、示例等。
五种列表拷贝的方法
1. 直接赋值
接赋值是最简单的一种拷贝方法,它只是将原的引用赋值给新的变量,新变量和原指向同一个内存地址。例如:
# 直接赋值
my_list1 = [1, 2, 3]
my_list2 = my_list1
my_list2[0] = 4
print(my_list1) #:[4, 2, 3]
print(my_list2) #:[4, 2, 3]
上述代码中,我们使用直接赋值将my_list1赋值给my_list2,修改my_list2的第一个元素,发现my_list1也被修改了。
2. 浅贝
浅拷贝是将原列表的元复制一份到新的列表中,新列表和原列表不再共享内存地址。但是,原列表中的元素是可变对象如列表、字典等,则新列表中的元素仍然是原列表中元素的引用。例如:
# 浅拷贝
my_list1 = [1, 2, [3, 4]]
my_list2 = my_list1.copy()
my_list2[2][0] 5
print(my_list1) # 输出:[1, 2, [5, 4]]
print(my_list2) # 输出:[1, 2, [5, 4]]
上述代码中,我们使用copy()方法将my_list1复制到my_list2,修改my_list中的第三个元素的第一个元素,发现my_list1也被修改了。
3. 切片
切片是一种浅拷的方法,它可以复制原列表的一部分到新的列表中。例如:
# 切片
my_list1 = [1, 2, [3, 4]]
my_list2 = my_list1[:]
my_list2[2][0] = 5
print(my_list1) #:[1, 2, [5, 4]]
print(my_list2) # 输出:[1, 2, [5, 4]]
上述代码中,我们使用切片将my_list1的所有元素复制到my_list2中,修改my_list2中的第三个元素的第一个元素,发现my_list1也被修改了。
4. list函数
list()函数也是一种浅拷贝的方法,它可以将其他序列类型(如元组、字符串等)转换为列表。例如:
# list()函数
my_tuple = (1, 2, [3, 4])
my_list = list(my_tuple)
my_list[2][0] = 5
print(my_tuple # 输出:(1, 2, [5, 4])
print(my_list) # 输出:[1, 2, [5, 4]]
上述代码中,我们使用list()函数将元组my_tuple转换为列表my_list,修改my_list中的第三个素的第一个元素,发现my_tuple也被修改。
- 深拷贝
深拷贝是将原列表及其所有嵌套的可变元素都复制一份到的列表中,新列表和原列表不再共享内存地址。例如:
# 深拷贝
import copy
my_list1 = [1, 2, [3, 4]]
my_list2 = copy.deepcopy(my_list1)
my_list2[2][0] = 5
print(my_list1) # 输出:[1, 2, [3, 4]]
print(my_list2) # 输出:[1, 2, [5, 4]]
上代码中,我们使用deepcopy()方法将my_list1及其所有嵌套的可变元素复制到my2中,修改my_list2中的第三个元素的第一个元素,发现my_list1没有被修改。
示例
下面是两个例子,演示了如何使用五种列表拷贝的方法。
示例1:使用浅拷贝存储学生信息
面是一个示例演示了如何使用浅拷贝存储学生信息:
# 使用浅拷贝存储学生信息
import copy
1 = [{"name": "Tom", "age": 18, "score": [80, 90, 85]},
{"name": "Jerry", "age": 19, "score": [85, 90, 95]}]
students2 = copy.copy(students1)
students2[0]["score"][0] = 90
print(students1) # 输出:[{'name': 'Tom', 'age': 18, 'score': [90, 90, 85 {'name': 'Jerry', 'age': 19 'score': [85, 90, 95]}]
print(students2) # 输出:[{'name': 'Tom', 'age': 18, 'score': [90, 90, 85]}, {'name': 'Jerry', 'age': 19, 'score': [85, 90, 95]}]
上述代码中,我们浅拷贝将students1复制到students2,修改students2中的第一个学生的第一个成绩,发现students1也被修改了。
示例2:使用深拷贝存储学生信息
下面是另一个例,演示了如何使用深拷贝存学生信息:
```python# 使用深拷贝存储学生信息
import copy
students1 = [{"name": "Tom", "age": 18, "score": [80, 90, 85]},
{"name": "Jerry", "age": 19, "score": [85, 90, 95]}]
students2 = copy.deepcopy(st1)
students2[0]["score"][0] = 90
print(students1) # 输出:[{'name': 'Tom', 'age': 18, 'score': [80, 90, 85]}, {'name': 'Jerry', 'age': 19, 'score': [85, 90, 95]}]
print(students2) # 输出:[{'name': 'Tom', 'age': 18, 'score': [90, 90, 85]}, {'name': 'Jerry', 'age': 19, 'score': [85, 90, 95]}]
```
上述代码,我们使用深拷贝将students1及其嵌套的可变元素复制到students2中,修改students2中的第一个学生的第一个成绩,发现students1没有被修改。
总结
本文详介绍了Python中五种列表拷贝的方法,包括浅拷贝和深拷贝,以及方法、示例等。我们演示了如何使用直接赋值、浅拷贝、切片、list()函数和深拷贝等方法拷贝列表,并给出了两个示例。列表是Python编程中非常重要的数据类型,掌握列表的拷贝方法于Python编程常重要。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中五种列表拷贝的方法 - Python技术站