精华内容
下载资源
问答
  • python列表复制

    千次阅读 2019-06-21 20:01:14
    我想实现一个列表复制的操作,于是我就写下了下面的代码: list_1 = ['apple', 'banana', 'berry'] list_2 = list_1 list_2.remove('apple') print(list_2) print(list_1) 结果却是这个样子滴: ['banana', 'berry...

    我想实现一个列表复制的操作,于是我就写下了下面的代码:

    list_1 = ['apple', 'banana', 'berry']
    list_2 = list_1
    
    list_2.remove('apple')
    print(list_2)
    print(list_1)
    

    结果却是这个样子滴:

    ['banana', 'berry']
    ['banana', 'berry']
    

    于是乎,我发现了一个问题,list_2 = list_1这样写并不是真正的列表复制,而是list_2 的指针指向了list_1所拥有的内容,类似下面这样:
    在这里插入图片描述
    在网上搜索后,学会了很多:

    # 内建函数id()可以返回对象的唯一id。该id是对象的内存地址。
    print(id(list_1), id(list_2))
    

    结果如下:

    2594026121288 2594026121288
    

    也就是两者的内存地址相同,再次证实我的想法!

    那么到底如何才能真正地实现复制操作呢? 方法如下:

    # 方法1:
    list_2 = list_1[:]
    
    # 方法2:
    list_2 = list(list_1)
    
    # 方法3:
    list_2 = list_1 * 1
    
    # 方法4:
    import copy
    
    list_2 = copy.copy(list_1)
    # or
    list_2 = copy.deepcopy(list_1)
    

    我们再次执行上面的代码:

    list_2.remove('apple')
    print(list_2)
    print(list_1)
    print(id(list_1), id(list_2))
    

    结果如下:

    ['banana', 'berry']
    ['apple', 'banana', 'berry']
    2594030892616 2594030892424
    

    完美解决问题!!!
    图片截自于链接:https://www.cnblogs.com/ifantastic/p/3811145.html
    感谢iFantasticMe

    展开全文
  • python列表复制(浅拷贝and深拷贝)

    千次阅读 2016-07-14 20:32:00
    列表复制 浅拷贝 深拷贝
    1》
    
    >>> l=[1,2,3,4]
    >>> l1=l
    >>> l
    [1, 2, 3, 4]
    >>> l1
    [1, 2, 3, 4]
    >>> id(l)
    140565035576856
    >>> id(l1)
    140565035576856
    这种做法是将l中的地址赋给了l1,并未真正生成一个新的列表,l1和l指向的是同一个列表。
    如果对l或l1的元素进行修改,列表l和l1会同时发生变化。
    >>> l.append(9)
    >>> l
    [1, 2, 3, 4, 9]
    >>> l1
    [1, 2, 3, 4, 9]
    下图显示了上述变化:


    2》
    >>> l
    [1, 2, 3]
    >>> l1=l[:]#浅拷贝
    >>> l
    [1, 2, 3]
    >>> l1
    [1, 2, 3]
    >>> id(l)
    140565035576784
    >>> id(l1)
    140565035497736
    >>> id(l[0])
    30695768
    >>> id(l1[0])
    30695768
    >>> l[0]=99
    >>> l
    [99, 2, 3]
    >>> l1
    [1, 2, 3]
    上述代码可用下图来解释:


    3》
    >>> l=[1,2,[4,5]]
    >>> l1=l[:]
    >>> l
    [1, 2, [4, 5]]
    >>> l1
    [1, 2, [4, 5]]
    >>> len(l)
    3
    >>> l[2]
    [4, 5]
    >>> l[2].append(8)
    >>> l
    [1, 2, [4, 5, 8]]
    >>> l1
    [1, 2, [4, 5, 8]]
    上述代码可用下图解释:


    4》
    >>> import copy
    >>> l
    [1, 2, [4, 5, 8]]
    >>> l1=copy.copy(l)#浅拷贝
    >>> l
    [1, 2, [4, 5, 8]]
    >>> l1
    [1, 2, [4, 5, 8]]
    >>> l[2].pop()
    8
    >>> l
    [1, 2, [4, 5]]
    >>> l1
    [1, 2, [4, 5]]
    copy.copy(l)与l[:]都是浅拷贝,功能一样,此处就不画图了。

    5》
    >>> import copy
    >>> l=[2,3,[4,5]]
    >>> l1=copy.deepcopy(l)#深拷贝
    >>> l
    [2, 3, [4, 5]]
    >>> l1
    [2, 3, [4, 5]]
    >>> l[2].append(9)
    >>> l
    [2, 3, [4, 5, 9]]
    >>> l1
    [2, 3, [4, 5]]

    上述代码可用下图解释:


    本文中的图片解释是个人理解,如有错误,请指出。

    (完)


    展开全文
  • python 数组列表复制

    千次阅读 2020-04-27 11:38:35
    她对你挑三拣四,要求你收敛脾气,要求你不能任性,要求你百依百顺,要求你懂事,却不知道以前有个人只要你快乐. 前端QQ群: 981668406 ...使用[:]复制一个列表 a_new_list = a_list[:] print("Output...

    她对你挑三拣四,要求你收敛脾气,要求你不能任性,要求你百依百顺,要求你懂事,却不知道以前有个人只要你快乐.

    前端QQ群: 981668406
    在此附上我的QQ: 2489757828 有问题的话可以一同探讨
    我的github: 李大玄
    我的私人博客: 李大玄
    我的简书: 李大玄
    我的CSDN: 李大玄

    使用[:]复制一个列表

    a_new_list = a_list[:]
    print("Output #77: {}".format(a_new_list))
    这个示例展示了如何复制一个列表。如果你需要对列表进行某种操作,比如添加或删除元
    素,或对列表进行排序,但你还希望原始列表保持不变,这时这个功能就非常重要了。要
    复制一个列表,在列表名称后面的方括号中放入一个冒号,然后将其赋给一个新的变量即
    可。在这个示例中, a_new_list 是 a_list 的一个完美复制,所以你可以对 a_new_list 添
    加或删除元素,也可以对 a_new_list 进行排序,而不会影响 a_list 。

    展开全文
  • Python 列表复制的几种方法

    千次阅读 2018-05-31 14:54:42
             ...所以下面的列表复制只是将给列表又起了个别名而已: [python] view plain copy print?>>> a&nbsp...

             为了追踪内存中的对象,Python采用了引用计数这一简单技术。变量实际是内存对象的别名,可以看成是C++中引用。当引用计数为0时,该对象就称为垃圾回收机制的回收对象。所以下面的列表复制只是将给列表又起了个别名而已:

    [python] view plain copy
    print ?
    1. >>> a = [4,5,6,7,9,8,5,2]  
    2. >>> a  
    3. [45679852]  
    4. >>> b = a  
    5. >>> id(a),id(b)  
    6. (2024993620249936)  
    >>> a = [4,5,6,7,9,8,5,2]
    >>> a
    [4, 5, 6, 7, 9, 8, 5, 2]
    >>> b = a
    >>> id(a),id(b)
    (20249936, 20249936)

    为了得到列表真正的拷贝,可以使用下面几种方法:

    方式一:切片操作

    [python] view plain copy
    print ?
    1. >>> c = a[:]  
    2. >>> id(a),id(c)  
    3. (2024993620258128)  
    >>> c = a[:]
    >>> id(a),id(c)
    (20249936, 20258128)
    方式二:list()函数

    [python] view plain copy
    print ?
    1. >>> d = list(a)  
    2. >>> id(d),id(a)  
    3. (2024540020249936)  
    >>> d = list(a)
    >>> id(d),id(a)
    (20245400, 20249936)
    方式三: 

    [python] view plain copy
    print ?
    1. >>> e = a * 1  
    2. >>> id(a),id(e)  
    3. (2024993620250056)  
    >>> e = a * 1
    >>> id(a),id(e)
    (20249936, 20250056)
    方式四:

    [python] view plain copy
    print ?
    1. >>> import copy  
    2. >>> f = copy.copy(a)  
    3. >>> id(a),id(f)  
    4. (2024993620085496)  
    >>> import copy
    >>> f = copy.copy(a)
    >>> id(a),id(f)
    (20249936, 20085496)
    方式五:

    [python] view plain copy
    print ?
    1. >>> x = [1,2,3,[4,5]]  
    2. >>> y = copy.copy(x)  
    3. >>> x[3][1] = 7  
    4. >>> y  
    5. [123, [47]]  
    6. >>> y = copy.deepcopy(x)  
    7. >>> x[3][1] = 9  
    8. >>> y  
    9. [123, [47]]  
    >>> x = [1,2,3,[4,5]]
    >>> y = copy.copy(x)
    >>> x[3][1] = 7
    >>> y
    [1, 2, 3, [4, 7]]
    >>> y = copy.deepcopy(x)
    >>> x[3][1] = 9
    >>> y
    [1, 2, 3, [4, 7]]
            可以看到,当列表中还有列表时,只有copy.deepcopy()才能得到包括子列表在内的完全拷贝。


    REF:http://www.cnblogs.com/ifantastic/p/3811145.html



    展开全文
  • 本意是使A = B,B为一个列表,结果在后续对A的操作中,导致B中的值也改变了,才回忆起python中均为“引用”这话。 为避免这种情况,对这篇博文总结有两种情况可避免。 1. 利用列表切片 A = B[:] 2. 深拷贝 A = ...
  • [Python]列表复制的几种方法

    千次阅读 2014-07-22 15:20:48
    所以下面的列表复制只是将给列表又起了个别名而已: >>> a = [4,5,6,7,9,8,5,2] >>> a [4, 5, 6, 7, 9, 8, 5, 2] >>> b = a >>> id(a),id(b) (20249936, 20249936) 为了得到列表真正的拷贝,可以使用下面几...
  • C# 复制列表

    千次阅读 2017-02-27 08:41:47
    本文:如何复制一个列表
  • python正确复制列表

    千次阅读 2018-06-08 19:50:22
    不幸的是[:]标记法被广泛使用,可能是Python程序员不知道更好的列表复制法吧。 首先我们需要了解Python是如何管理对象和变量。Python没有C语言中的变量。在C语言中,变量不止是个名字,它是字节集合并真实存在于内....
  • Python列表数据复制冒号使用

    千次阅读 2017-11-19 16:05:09
    先看一段列表复制的代码: x=[1,2,3] y=x[:] print(y) 输出为: [1, 2, 3] 注意第2行的冒号,其前后可以添加参数a,b,表示复制列表的开始与结束位置。 再来看几个修改 1. x=[1,2,3] y=x[2:] print(y) 输出:[3] 2. ...
  • 易语言复制组件列表框源码,复制组件列表框,添加组件,排列组件
  • python复制列表

    千次阅读 2019-03-01 16:10:00
    **python复制列表** 这里讲到两种方式复制列表,一种是通过切片,一种是通过**=**号,但里面区别很大,需要注意。 1.利用切片创建的副本是真实存在的,是新的一个列表,可以说切片后得到的列表已经和原来的列表没有...
  • Python列表赋值,复制,深拷贝以及5种浅拷贝详解

    千次阅读 多人点赞 2019-05-08 23:52:47
    列表复制这个问题,看似简单的复制却有着许多的学问,尤其是对新手来说,理所当然的事情却并不如意,比如列表的赋值、复制、浅拷贝、深拷贝等绕口的名词到底有什么区别和作用呢? 列表赋值 # 定义一个新列表 l1 = ...
  • 列表复制这个问题,看似简单的复制却有着许多的学问,尤其是对新手来说,理所当然的事情却并不如意,比如列表的赋值、复制、浅拷贝、深拷贝等绕口的名词到底有什么区别和作用呢? 列表赋值 # 定义一个新列表 l1 = ...
  • 如何复制redis的List数据? 把一个有600多个元素的列表复制成几份放在同一个数据库里供不同的用户使用。谢谢!
  • 易语言 超级列表框 单击复制指定内容源码 单击超级列表框, 获取并复制指定内容. 用到dll命令, 方便快捷
  • MFC 列表右键复制,CTRL+C复制
  • 2、但是如果列表中仍然包含列表,这种方法就不合适,原因就是,对于a[:]这种处理,只是将列 表元素的值生成一个新的列表,如果列表元素也是一个列表,如:a=[1,[2]],那么这种复制对于元素[2]的处理只是复制[2]的...
  • 列表复制这个问题,看似简单的复制却有着许多的学问,尤其是对新手来说,理所当然的事情却并不如意,比如列表的赋值、复制、浅拷贝、深拷贝等绕口的名词到底有什么区别和作用呢? 列表赋值 # 定义一个新列表 l1 =...
  • #处理列表的部分元素称为切片,也就是通过下标取得列表元素进行操作,下标从0开始 #例: players = ['小明','小红','小花','小黑','小王'] print(players[0:3]) #输出['小明', '小红', '小花'],下标从0开始止于第二...
  • python 复制列表的六种方法

    千次阅读 2020-04-02 15:01:59
    以下是对列表的六种复制方式,总结来说在复制时有三种原理,其中 l1l1l1 是一种,l6l6l6 是第二种,其他的四个方法属于第三种。 import copy l = [1, 2, [3, 4]] l1 = l l2 = l.copy() l3 = l[:] l4 = list(l) l5 = ...
  • 所以经常需要复制拷贝原始列表进行备份。 Python使用copy()函数进行备份复制列表。 程序实例: list_val = ["www","manhuan","net"] print(list_val) new_list = list_val.copy() print(new_list) 复制拷贝的新的...
  • sharepoint 复制一个列表

    千次阅读 2011-02-22 16:56:00
    自己新建了一个列表 这个列表的格式在多个网站重复使用,这时最好的方式当然是采用“复制”的方式。 就是将列表另存为列表模版,可以在新建的时候,类似复制的方式新建列表。 1.进入列表设定 2.将列表设定成模版 3....
  • #:将一个列表的数据复制到另一个列表中。#方法一:一个个从list1中读出,并存入list2中'''list1=[1,2,4,5]list2=[]for i in list1: list2.append(i)print(list2)'''#方法二:利用copy()函数'''list1=[2,43,4,6]list...
  • Python List 列表的深浅层复制

    千次阅读 2018-05-01 14:02:36
    复制的三种方法: a = [1, 2, 3, 4] # 第一种 使用copy()函数 或导入copy包 b = a.copy() import copy b = copy.copy(a) # 第二种 b = a[:] # 第三种 b = list(a) 特点:b有独立的不用于a的地址,修改元素...
  • Student实体类:public class Student { public string Name { get; set; } public int Age { get;...}准备一个List列表,里面放两个元素。List<Student> originalList= new List();Student s1 = new Student(){ N
  • 列表的赋值与复制

    千次阅读 2018-03-18 19:47:25
    将一个列表的值复制到另一个列表中有三种方法: 1.列表copy()函数 2.list()转换函数 3.列表分片[:] a = [1,2,3] b = a.copy() c = list(a) d = a[:] 这三种方法创建的b ,c ,d 都是自身带有值的新对象,改变a ...
  • # 题目:将一个列表的数据复制到另一个列表中list1 = [x for x in range(1,5)]list2 = []print(list1)print(list2) #初始化print('地址赋值------------------')list2 = list1print (list2)print('调用函数---------...
  • >>> mylist1 = [1, 2, 3, 4] >>> myl = mylist1 >>> myl [1, 2, 3, 4] >>> mylist1[0] = 5 >>> mylist1 ...浅复制仅仅只是复制了对对象的引用,即 mylist1 和 myl 指向的是同一个对象,所以如果改变了该对象

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 704,869
精华内容 281,947
关键字:

列表复制