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字符串格式化函数

    下面是关于“python字符串格式化函数”的完整攻略。 什么是字符串格式化 字符串格式化是指将一个或多个变量插入到字符串中指定的位置。在Python中,字符串格式化可以通过多种方式实现,其中格式化字符串是比较基础且常用的一种方式。 格式化字符串的基本语法 格式化字符串使用花括号 {} 加上一个或多个标记代替待插入的值。标记是一个可选项,可以对插入的值进行转换…

    python 2023年6月5日
    00
  • 详解Python按属性对自定义对象的元组进行排序

    当我们有一个自定义对象的元组列表时,如果要按照元组中的某个属性进行排序,可以使用Python中的sorted函数以及lambda表达式来实现。 以下是按属性对自定义对象的元组进行排序的完整攻略。 创建自定义对象 首先,我们要创建一个自定义对象,该对象包含多个属性。例如,我们创建一个Person类,该类有name、age和country属性。 class Pe…

    python-answer 2023年3月25日
    00
  • Python2.6版本pip安装步骤解析

    Python2.6版本pip安装步骤解析 在Python 2.6版本中,pip并未默认安装,需要手动安装。下面是Python 2.6版本pip安装的步骤。 步骤1:下载get-pip.py脚本 Python 2.6版本需要使用比较旧的pip脚本。我们需要下载适用于Python 2.6版本的pip脚本。使用curl或者wget工具下载get-pip.py脚本。…

    python 2023年5月14日
    00
  • Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)

    Python3中使用urllib的方法详解 在Python3中,我们可以使用urllib模块来发送HTTP请求,包括GET、POST等。本文将详细讲解如何使用urllib模块发送HTTP请求,并介绍一些常用的参数,例如header、代理、超时、认证和异常处理等。 发送GET请求 发送GET请求是最常见的HTTP请求之一,可以使用urllib模块的urlope…

    python 2023年5月14日
    00
  • 基于Python制作天眼查小程序的示例代码

    下面是“基于Python制作天眼查小程序的示例代码”的完整攻略。 1. 需求分析 在开始编写代码之前,需要对需求进行分析。我们要制作一个“天眼查小程序”,用户可以通过输入公司名称,然后程序会返回相应的公司信息。这个小程序需要满足以下要求: 用户可以通过命令行输入公司名称; 程序会请求天眼查的API,并返回公司信息。 2. 进行API请求 我们首先需要进行AP…

    python 2023年5月23日
    00
  • python接口自动化使用requests库发送http请求

    以下是关于Python接口自动化使用requests库发送HTTP请求的攻略: Python接口自动化使用requests库发送HTTP请求 在Python接口自动化中,使用requests库发送HTTP请求是非常常见的操作。以下是Python接口自动化使用requests库发送HTTP请求的攻略。 发送GET请求 使用requests库发送GET请求非常简…

    python 2023年5月14日
    00
  • python tkinter实现连连看游戏

    “Python tkinter实现连连看游戏” 的攻略共分为以下几部分: 实现窗口和界面设计 加载游戏图片 写连连看算法实现图片消除 添加游戏音效和时间限制 构建游戏主循环以及检测游戏结束 接下来将针对每一步内容进行详细讲解。 一、实现窗口和界面设计首先,我们需要导入 tkinter 模块,并创建一个窗口,设置窗口的标题,大小和背景颜色等。 import t…

    python 2023年6月13日
    00
  • Python Flask入门

    Python Flask入门攻略 Python Flask是一种轻量级的Web框架,它可以帮助我们快速地构建Web应用程序。本文将介绍Python Flask的入门攻略,包括安装、基本用法、路由、模板、表单等内容,并提供两个示例。 安装 在使用Python Flask之前,我们需要先安装它。可以使用pip命令来安装Python Flask: pip inst…

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