Python中五种列表拷贝的方法

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也被修改。

  1. 深拷贝

深拷贝是将原列表及其所有嵌套的可变元素都复制一份到的列表中,新列表和原列表不再共享内存地址。例如:

# 深拷贝
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技术站

(1)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • Python读取指定目录下指定后缀文件并保存为docx

    以下是Python读取指定目录下指定后缀文件并保存为docx的完整攻略。 1. 准备工作 首先,我们需要准备一个Python环境,并安装python-docx库。在安装之前,我们需要确认是否已经安装了pip。如果没有,可以按照以下步骤安装: 在 Linux 或 Mac 系统上安装 pip sudo easy_install pip 在 Windows 系统上…

    python 2023年6月5日
    00
  • 手把手教你使用Python解决简单的zip文件解压密码

    下面就手把手教你使用Python解决简单的zip文件解压密码的完整攻略: 1. 安装Python库 解析zip文件需要使用zipfile库,因此需要先安装该库,可以通过在终端输入以下命令来完成安装: pip install zipfile 2. 加载zip文件 使用Python打开zip文件需要使用zipfile.open()函数,该函数的参数需要传入zip…

    python 2023年6月3日
    00
  • Python 多线程爬取案例

    Python多线程爬取案例的完整攻略如下: 1. 多线程爬取网页内容 以下是一个示例,演示如何使用Python多线程爬取网页内容: import requests import threading def get_url_content(url): response = requests.get(url) print(response.content) if…

    python 2023年5月14日
    00
  • Python实现平行坐标图的两种方法小结

    Python实现平行坐标图的两种方法小结 简介 平行坐标图(Parallel Coordinates)是数据可视化的一种常用方法,它可以有效地展示高维数据的特征和关系。本文将介绍Python中实现平行坐标图的两种方法,并且提供两个示例说明这两种方法的使用。 方法一:使用plotly库 安装plotly库 要使用plotly库,首先需要安装它。可以使用pip进…

    python 2023年5月18日
    00
  • Python基础之常用库常用方法整理

    Python基础之常用库常用方法整理 Python是一门通用编程语言,拥有丰富的标准库和第三方库,可以实现众多功能。本文主要介绍Python常用的一些标准库和常用方法,帮助读者更有效地使用Python进行开发。 常用库 1. os库 os库提供了一种平台独立的方法来使用操作系统功能。它主要用于和操作系统交互,比如文件读写、目录操作等。下面是一些常用的方法。 …

    python 2023年5月18日
    00
  • 浅谈Python3中打开文件的方式(With open)

    浅谈Python3中打开文件的方式(Withopen) 在Python3中,打开文件是非常常见的一种操作,可以通过 with open 的方式来实现文件的读取和写入。这种方式可以有效避免文件对象没有正常关闭的问题,同时也更加方便、简单。 打开文件的方式 在Python中,打开文件可以采用以下的方式: with open(文件路径, mode=’r’, enc…

    python 2023年5月13日
    00
  • 浅谈Django前端后端值传递问题

    浅谈Django前后端值传递问题 前言 Django是一个高效的、高度可定制的开源Web框架,它的MVC设计模式被广泛应用于Web开发中。在初学Django的过程中,前后端值的传递会成为必须掌握的基础知识。在本文中,我们将详细讨论Django中前后端值的传递问题。 GET与POST方法 在Django中,与前后端值的传递密切相关的是HTTP请求中的GET方法…

    python 2023年6月3日
    00
  • Python3实现将文件归档到zip文件及从zip文件中读取数据的方法

    下面是详细的攻略: 准备工作 在Python3中,我们可以使用zipfile模块来实现将文件归档到zip文件及从zip文件中读取数据的方法。在使用该模块之前,需要先通过pip安装相应的模块。 !pip install zipfile 将文件归档到zip文件 我们可以使用zipfile模块的ZipFile类来创建并打开一个zip文件,然后使用该类的方法将文件添…

    python 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部