Python中如何复制列表

我们怎么复制一个列表呢,我们来看看下面代码

list_test = [1, 2, 3]

copy_list = list_test # 这只是引用,指向同一个内存地址

copy_list[0] = 99

print(list_test) # 输出 [99, 2, 3](原列表被修改)



从结果中不能看出,很容易发现修改copy_list,list_test也改变了也同时修改了。原来是这样的,只是一个引用,他们就指向了一个东西(位置),数据是完全共享的。

#deepcp
import copy
list_test = [1, [2, 3], 4]
q_test = copy.copy(list_test)#浅拷贝影响原列表
deep_copy = copy.deepcopy(list_test)#深拷贝完全独立
# 测试修改嵌套列表,看如何影响的
q_test[1][0] = 99
deep_copy[1][0] = 100
print(list_test)       # 输出 [1, [99, 3], 4]
print(q_test)   # 输出 [1, [99, 3], 4] #
print(deep_copy)      # 输出 [1, [100, 3], 4] 这个和原来的不一样,没有修改到原来的,


浅拷贝和深拷贝就是调用不同的函数,依据你的需要来选择。

浅拷贝其实是创建了一个新列表,新列表里面的元素是对原元素的一个引用,修改这些的时候,原列表也变化了,如果你新加的元素,修改就改不了原列表了。这就是所谓外层独立,内层共享就是引用的部分。

我们看看给浅拷贝增加一个元素,并做修改

#deepcp
import copy
list_test = [1, [2, 3], 4]
q_test = copy.copy(list_test)#浅拷贝影响原列表
#deep_copy = copy.deepcopy(list_test)#深拷贝完全独立
# 测试修改嵌套列表,看如何影响的
q_test[1][0] = 99
#deep_copy[1][0] = 100
q_test.append(5)#增加一个
print(q_test)#打印下看看
q_test[0]=55
print(list_test)      
print(q_test)  
#print(deep_copy)      # 输出 [1, [100, 3], 4] 这个和原来的不一样,没有修改到原来的,

很明显不是原来列表的东西,是独立的,不影响的,你学费了吗。

相关文章

python入门012:复制列表

一、复制列表复制列表即根据既有列表创建新的列表。1、切片复制我们可以通过创建一个包含原列表所有元素的切片,从而实现复制列表。方法是,切片区间同时省略元素的起始索引和终止索引,即[:],也就是创建一个初...

python学习——021列表里复制和引用的区别

Python 里列表复制和列表引用的区别,下面通过示例来详细分析:列表复制list_a = ['a', 'b', 'c'] list_b = list...

Python文件操作基础指南

以下是一份详细的 Python 基础文件操作指南,包含常见操作和示例代码:一、文件操作基本流程打开文件 → 2. 操作文件 → 3. 关闭文件二、打开文件使用 open() 函数:python复制fi...

Python目录与文件操作教程

大家好,我是ICodeWR。今天要记录的是 如何使用Python进行常见的目录和文件操作。Python提供了强大的内置模块来处理文件和目录操作。1. 基本模块介绍Python中主要使用以下模块进行文件...

python组织和管理代码:模块和包、子模块和子包概念及举例

在Python中,模块和包是组织和管理代码的重要概念。同时,模块和包可以包含子模块和子包。下面我将为你详细解释这些概念。模块和包、子模块和子包的概念模块:模块是一个包含 Python 代码的文件,它可...