首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python列表赋值,复制,深拷贝以及5种浅拷贝详解

Python列表赋值,复制,深拷贝以及5种浅拷贝详解 概述 在列表复制这个问题,看似简单的复制却有着许多的学问,尤其是对新手来说,理所当然的事情却并不如意,比如列表的赋值、复制、浅拷贝、深拷贝等绕口的名词到底有什么区别和作用呢..., 5] [100, 2, 3, 4, 5] 可以看到,更改赋值后的L2后L1同样也会被更改,看似简单的“复制”,在Python中,列表属于可变对象,而对可变对象的复制其实就是将列表的内存空间类似C中的指针再次指向新的变量名...浅拷贝列表中的元素为不可变对象时,我们可以用以下方法对列表进行赋值: import copy # 定义一个新列表 L0 = [1, 2, 3, 4, 5] print(L0) print('-'*40...2]时,L0中的可变对象L0[2]也发生了改变,那么怎么实现真正的完全的拷贝呢?...深拷贝 利用copy模块中的deepcopy进行深拷贝: import copy L0 = [1, 2, [3], 4, 5] print(L0) L2 = copy.deepcopy(L0) L2[2

5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    python列表中的赋值与深浅拷贝

    首先创建一个列表 a=[[1,2,3],4,5,6] 一、赋值 a=[[1,2,3],4,5,6] b=a a[0][1]='tom' print(a) print(b) 结果: [[1, 'tom',...b=a b[0][1]='tom' print(a) print(b) 结果: [[1, 'tom', 3], 4, 5, 6] [[1, 'tom', 3], 4, 5, 6] 总结:赋值不管是对a列表改变还是对...b列表改变, 只要改变其中一个,另一个也会跟着变,这是因为a 和b共用一块内存,没有创建新的内存, 他们是相同的,他们指向同一个内存区域。...,拷贝第一层数据,不拷贝内部子元素 在本代码中,b列表重新开辟了一块内存放元素【b【0】,4,5,6】,也就是第一层内容, 然后b【0】的位置指向了a【0】指向的内存位置 三、深拷贝   使用copy函数...重新开辟一块内存,存放拷贝列表的所有内容。

    92540

    列表复制 之 直接赋值 浅拷贝 和 深度拷贝的分析

    列表复制 之 直接赋值 浅拷贝 和 深度拷贝的分析 1.三者简述 a....2.程序举例 现创建一个列表a,列表里的子对象也是列表,并进行赋值,浅拷贝,和 深度拷贝操作: ?...可以看到,我只改变了列表a,但是b也跟着变化了,c 和 d却没有变化 说明:赋值操作其实不是真的拷贝,它只是令变量b指向了a所指向的对象,他们两个其实共同指向一个对象,类似于C++中的引用!...而拷贝操作,无论深浅,都是相当于新建了一个新的列表,这个列表c 和 d 与源列表 a其实是独立的,所以列表c和d并无变化! 2.2浅拷贝和深度拷贝的区别 现在对列表a的子对象进行操作!...所以浅拷贝不能说是创建了一个完全独立的新的列表,而深度拷贝,可以看出,真的就是生成了一个完全不相关的新的列表d!不管a怎么变,d列表我自岿然不动

    62510

    python拷贝与浅拷贝

    python中的可变对象包括:list、dict、set。  python中的赋值语句不会创建对象的拷贝,仅仅只是将变量名称绑定到一个对象上。...创建浅拷贝 仍以python列表为例,通常我们会用list()函数来复制一个列表,这个复制过程,就是一个浅拷贝。代码示例: ? 可以看到,通过浅拷贝方式,确实是复制了一个列表。...复制前后两个变量的id不同,两个变量指向两个不同的内存地址,且修改其中一个列表中的值,对另一个列表不会产生影响。...而之所以称这种复制方式为浅拷贝,是因为这种拷贝只对一层对象有效,当列表中有子对象时,对子对象的修改将同时影响原始对象和拷贝对象。代码示例: ?...创建深拷贝 python标准库中的copy模块提供了创建python对象的浅拷贝和深拷贝的接口。使用deepcopy()函数,可以创建一个对象的深拷贝。代码示例: ?

    69320

    python拷贝和深拷贝

    python中的赋值是按引用来传递的,如果不是赋值而是拷贝,那就需要用到copy模块了,这就不得不谈浅拷贝和深拷贝了。 浅拷贝copy() #!.../usr/bin/python  import copy  class MyClass:     def __init__(self, name):         self.name = name     .../usr/bin/python  import copy  class MyClass:     def __init__(self, name):         self.name = name     ...,如果浅拷贝,那么系统就新建一个列表,它的每个元素都指向原来列表的每个元素(就像C语言里的指针数组),输出的时候就把它各元素指向的母体元素内容显示出来,所以list1追加了f元素以后list2并没有显示...对于深拷贝来说没有任何改变,因为深拷贝是新建一个列表,把原列表的内容原封不动拷过来,拷过来以后它和原列表一模一样,至于原列表后来做了什么改变根本不关它的事。形象理解就是浅拷贝是活的,深拷贝是死的。

    43040

    Python中浅拷贝与深拷贝

    Python内置的集合是可变的,如列表、数据集和集合都可以通过在现有集合上调用它们的原来函数进行复制: new_list = list(original_list) new_dict = dict(original_dict...) new_set = set(original_set) 但是,此方法不适用于自定义对象,而且在此基础上,它只创建浅拷贝...对于复合对象,如列表、数据集和集合,有一个重要的区别:浅拷贝和深拷贝 A...这些没有复制,只是在复制的列表中再次被引用。 因此,当在xs中,此修改反映在ys也是一样,那是因为两个列表共享相同的子对象。...这些问题的答案在Python标准库中的copy模块里。该模块为创建任意Python对象的浅拷贝和深拷贝提供了一个简单的接口。 深拷贝 让我们重复前面的列表复制示例,但有一个重要的区别。...Point(0, 1), Point(5, 6)) >>> srect Rectangle(Point(0, 1), Point(5, 6)) >>> rect is srect False 还记得前面的列表示例是如何说明深拷贝和浅拷贝之间的区别的吗

    1.1K10

    python全栈开发《42.列表的copy函数(深浅拷贝区别)》

    1.copy的功能 将当前的列表复制出一份相同的列表,可以将这个新的列表赋值给一个新的变量,新列表与旧列表内容相同,但内存空间不同。...0 3)copy在功能上属于浅拷贝。...浅拷贝: 通俗的说,我们有一个列表a,列表里的元素还是列表,当我们拷贝出新列表b后,无论是a还是b的内部的列表中的数据发生了变化后,相互之间都会受到影响。...但是如果列表中还有列表,它是属于一种深层次的数据。如果深层数据发生变化,那么相互之间还是会发生变化。 总结:只能对数据结构的第一层数据进行拷贝,如果数据结构里有更深层的数据,则无法进行拷贝。...这就是浅拷贝

    6410

    Python 深浅拷贝

    Python拷贝和深度拷贝 今天面试了一个计算机专业研究生且大学出身也很好,但是面试的结果来看并没有达到我的预期。很多基础计算机的知识貌似都不是很懂,更别说对操作系统、编译原理和算法的深度造化了。...虽然有点扯淡,还是开始咱们今天聊一下Python的浅拷贝和深度拷贝。...对象赋值 在Python中大致可以分为immutable和mutable两种数据类型,比如:字符串字面值、数字、元组等这些是immutable类型,列表、字典等是mutable类型。...我们先来看一下python对象赋值是如何赋值的? #!...看一下产生浅拷贝的效果操作: 使用切片[:]操作 使用工厂函数(如list/dir/set) 使用copy模块中的copy()函数 深拷贝拷贝是完全真正意义上的拷贝,是完全复制所有对象元素。

    81380

    Python学习(二)---- 字符串操作、列表字典及深浅拷贝

    上个系列我们一起学了 Python学习(一)---- Python基础必备 今天一起学习python的数据结构的相关知识 ---- 1....其实Python和Java/C#一样,也是一门基于虚拟机的语言 简述Python的运行过程 当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时...列表、元组操作 列表 ? ? 元组 元组(): 又称只读列表,只有 count index 两个方法。 ---- 6. 字典操作 字典一种key - value 的数据类型 语法: ?...7.2 字典、列表等数据结构 先看个例子: ? 请想一下:如果对alphabet的值做如下更改,其他四个变量的值会不会变化呢? ? 下面分别看一下其他四个变量的值: ?...完全克隆,不只拷贝内存地址,则要深copy,使用copy模块的copy.deepcopy() ---- 声明:本文系网络转载,版权归原作者所有。如涉及版权,请联系删除!

    60420
    领券