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

    2018-08-12 20:19:02
    列表是python里面很重要的内置数据结构,而列表也十分的常见。...那么列表复制到底有什么不同的呢? 首先,我们这里有一个很简单的列表,如下: list1 = [1,2,3,4] 如果我们把list1直接赋值给一个新的列表;...

    列表是python里面很重要的内置数据结构,而列表也十分的常见。列表可以说是一个由有顺序的可以索引的元素组成的可变的线性数据结构。那么在使用列表中我们可能需要对一个原列表进行不同的操作,这样我们就需要使用不同的复制手段来解决需求问题。那么列表复制到底有什么不同的呢?
    首先,我们这里有一个很简单的列表,如下:

    list1 = [1,2,3,4]

    如果我们把list1直接赋值给一个新的列表;list2,并将list2里面的 索引为2的元素重新赋值那么会对原来的列表产生影响吗?

    list1 = [1,2,3,4]
    list2 = list1
    list2[2] = 8
    print(list1)
    [1, 2, 8, 4]
    

    我们可以看到改变list2对list1也产生了影响。这种赋值是完全一样的,动其中一个剩下的那个也会发生改变。那么怎么只复制内容?

    list2 = list1.copy()
    id(list1),id(list2)

    (79456904, 81130696)
    可以通过内存的ID看到两个列表的地址是不一样的,也不会产生像直接赋值那样的互相影响。但是如果列表里面的元素有引用型的元素呢?同样使用list.copy()还可以吗?

    list0 = [1,2,[3,4],5]
    list3 = list0.copy()
    list3[1] = 8
    list3[2][1] = 9
    print(list0)
    print(list3)

    [1, 2, [3, 9], 5]
    [1, 8, [3, 9], 5]
    我们可以看到list0里面的第3个元素[3,4]是一个复杂型的数据,它不像是单独的一个数,字符串那样。这时通过copy list3其实只是浅复制或者叫影子复制,这时处理引用型数据就会对原来的列表产生影响一起改变,因为复制时只是复制了内存的地址,新的地址通往的还是原来的内存中存放的引用类型。
    一般复制时我们肯定不想对原来的列表产生影响,那么我们就需要深拷贝了。copy模块提供了deepcopy。

    import copy
    list0 = [1,2,[3,4],5]
    list4 = copy.deepcopy(list0)
    list4[2][1] = 9
    print(list0)
    print(list4)

    [1, 2, [3, 4], 5]
    [1, 2, [3, 9], 5]
    可以看到使用深拷贝即使原列表有引用类型,也是不会互相影响的。

    展开全文
  • python列表复制

    2021-01-17 17:58:33
    python列表复制 1.建立副本 只是把当前列表内容复制给新列表,并不会影响新列表的后续操作 hh=jishu[:] jishu.append('hh') hh.append('yuy') >>>>>> [1, 8, 27, 64, 125, 216, 343, 512, 729, ...

    python列表复制

    1.建立副本 只是把当前列表内容复制给新列表,并不会影响新列表的后续操作
    hh=jishu[:]
    jishu.append('hh')
    hh.append('yuy')
    >>>>>>
    [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000, 'hh']
    [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000, 'yuy']
    

    两个列表新操作互不影响

    2.列表关联

    表明两个变量指向同一个列表,对任一个操作都会改变列表

    ww=jishu
    ww.append('wwy')
    print(ww)
    print(jishu)
    >>>>>
    [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000, 'hh', 'wwy']
    [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000, 'hh', 'wwy']
    
    展开全文
  • Python 列表复制

    2019-01-25 15:59:00
    Python 列表复制 关于Python 列表的复制,有多种方法,常用的 有 赋值、切片、list、copy,copy.deepcopy等。 但是 实际用时 又有区别,不小心可能就用错了。 接下来 简单举例 说明一下 使用 import copy ...

    Python 列表复制

     

    关于Python 列表的复制,有多种方法,常用的 有 赋值、切片、list、copy,copy.deepcopy等。

    但是 实际用时 又有区别,不小心可能就用错了。

    接下来 简单举例 说明一下 使用

     

    import  copy
    
    a = [1,2,3,4]
    b = a
    c = a[:]
    d = a.copy()
    e = copy.copy(a)
    f = copy.deepcopy(a)
    g = list(a)
    print('id(a):%d,id(b):%d' % (id(a),id(b)))print('id(c):%d' % (id(c)))
    print('a:%s,b:%s,c%s'%(a,b,c))
    a[2] = 5
    del a[3]
    print('a:%s,b:%s,c%s'%(a,b,c))
    print('id(d):%d' % (id(d)))
    print('d:%s' % d)
    print('id(e):%d' % (id(e)))
    print('e:%s' % e)
    print('id(f):%d' % (id(f)))
    print('f:%s' % f)
    print('id(g):%d' % (id(g)))
    print('g:%s' % g)

    执行 结果如下

    id(a):4409071368,id(b):4409071368
    id(c):4409070344
    a:[1, 2, 3, 4],b:[1, 2, 3, 4],c[1, 2, 3, 4]
    a:[1, 2, 5],b:[1, 2, 5],c[1, 2, 3, 4]
    # 以上可知 a、b id 一致,改变a 则 b 也会改变
    # 一下 id 则都不相同 
    id(d):4408193736
    d:[1, 2, 3, 4]
    id(e):4409091336
    e:[1, 2, 3, 4]
    id(f):4409091400
    f:[1, 2, 3, 4]
    id(g):4409091080
    g:[1, 2, 3, 4]

     

    换一种 内嵌列表的列表复制

    names = ["小明", "小红", ["张三", "李四", "王五"], "小黑", "小黄", "小白"]
    # 复制一份列表
    names2 = names.copy()
    # 把李四 改成英文
    names[2][1] = "Lisi"
    print(names)
    print(names2)
    # 执行结果
    ['小明', '小红', ['张三', 'Lisi', '王五'], '小黑', '小黄', '小白']
    ['小明', '小红', ['张三', 'Lisi', '王五'], '小黑', '小黄', '小白']

    这段代码的运行结果是,两个列表的李四都变成了英文,来分析一下原理

    其实这个图也挺简单的,就是中间那个列表是单独分配了一块空间,然后从第一层列表中去引用地址,复制的names2 也是引用的地址,所以真实的值一变,两个列表的内部列表的值也就变了。

    也就是说 list.copy() 方法只能 copy 一层,这就是所谓的浅复制。

    补充:第二个列表copy 第一个列表,实际上第二个列表的每个元素是第一个列表每个元素的引用 

     

    实现浅复制的三种方法

     

    import copy
    
    names = ["小明", "小红", "小黑", "小黄", "小白"]
    # 浅copy 1.
    names1 = copy.copy(names)
    # 2.
    names2 = names[:]
    # 3. 工厂函数
    names3 = list(names)

     

    深复制的方法 

     

    import copy
    
    names = ["小明", "小红", "小黑", ["粉色"], "小黄", "小白"]
    # 深复制
    deep_names = copy.deepcopy(names)
    # 修改粉色为 Pink
    names[3][0] = "Pink"
    # 分别打印输出两个列表
    print(names)
    print(deep_names)
    # 输出结果为:
    
    ['小明', '小红', '小黑', ['Pink'], '小黄', '小白']
    ['小明', '小红', '小黑', ['粉色'], '小黄', '小白']

     

    如下例

    a = [[10], 20]
    b = a[:]
    c = list(a)
    d = a * 1
    e = copy.copy(a)
    f = copy.deepcopy(a)
    a.append(21)
    a[0].append(11)
    
    print (id(a), a)
    # 4317123656 [[10, 11], 20, 21]
    print (id(b), b)
    # 4317123592 [[10, 11], 20]
    print (id(c), c)
    # 4317123848 [[10, 11], 20]
    print (id(d), d)
    # 4317082888 [[10, 11], 20]
    print (id(e), e)
    # 4317123720 [[10, 11], 20]
    print (id(f), f)
    # 4317123784 [[10], 20]

     

    转载于:https://www.cnblogs.com/BlueSkyyj/p/10319421.html

    展开全文
  • 本文实例讲述了C#将HashTable中键列表或值列表复制到一维数组的方法。分享给大家供大家参考。具体如下: 下面的示例说明如何将 Hashtable 中键的列表或值的列表复制到一维 Array 中。 using System; using System....
  • 列表复制与赋值

    2019-09-25 20:01:49
    1.赋值 赋值指向同一块内存,更改原列表则被赋值的列表也跟着改变eg:nums_a=[1,2,3,4,5],nums_b=nums_a nums_a=[1,2,3,4,5] nums_b=nums_a nums_a[0]='hello' ...2.列表复制 列表.copy() nums_b...

    1.赋值

    赋值指向同一块内存,更改原列表则被赋值的列表也跟着改变eg:nums_a=[1,2,3,4,5],nums_b=nums_a

    nums_a=[1,2,3,4,5]
    nums_b=nums_a
    nums_a[0]='hello'
    print(nums_b)
    ['hello', 2, 3, 4, 5]
    

    2.列表复制

    • 列表.copy()  nums_b=nums_a.copy()
    • list()函数转换 nums_b=list(nums_a)
    • 切片  nums_b=nums_a[:]

    这三种方法都是自带值得新对象,改变nums_a的值,不影响nums_b

     说明(找的图片,侵删)

    赋值

    赋值

    浅复制

    深复制

    >>> import copy
    >>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    >>> b = copy.deepcopy(a)
    >>> b[0][0] = 100
    
    >>> a
    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    >>> b
    [[100, 2, 3], [4, 5, 6], [7, 8, 9]]
    
    ###此时修改b没有影响到a。

     

      

    转载于:https://www.cnblogs.com/RQH-nlp/p/11017298.html

    展开全文
  • 主要介绍了python函数调用,循环,列表复制实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Java列表复制性能测试报告 作者: 杜伟 QQ:184167125 1综述 本文对Java的列表(List、Map)的复制性能进行测试,并给出测试结果。在系统开发时,后台业务逻辑中的数据模型操作,需要对大量的列表进行操作,其中...
  • 【python】列表复制

    2018-01-24 12:48:53
    我们经常需要根据已有列表来创建全新的列表,下面来介绍列表复制的工作原理。<1>原理 要复制列表,首先需要创建一个包含整个列表的切片,方法是同时省略起始和终止索引([:]),即让python创建一个...
  • Python列表复制

    2018-12-11 09:45:27
    问题描述:已知一个列表,求生成一个新的列表列表元素是原列表复制 a=[1,2] b=a
  • 列表操作:遍历、range()、列表解析、列表切片、列表复制、元组1. 遍历列表letters = ['A','B','C','D','E','F','G']for letter in letters:print(letter)输出:ABCDEFG记得for ...... :有冒号,循环内容要缩进...
  • 关于python列表复制/拷贝问题失败记录正确做法 失败记录 尝试将原列表a备份,对b进行插入操作。但就结果看,a、b的元素都发生了变化。 list_a = [1, 2] list_b = list_a # 试图将a备份为b,对b的操作不影响a list...
  • 列表复制有两种方式: (1)在不指定任何索引的情况下从列表my_foods中提取一个切片,从而创建该列表副本,再讲该副本存储到变量friend_foods中。打印列表发现包含食品相同, friend_foods = my_foods[:] (2)该...
  •   今天在刷leetcode时发现有一行代码是ret.append(path[:]),之前一直以为path[:] 和 path等价,但是如果写成path就WA,查阅资料后发现是Python列表复制的知识没有掌握.    在这里记录一下二者的区别,看看下面的...
  • python第九课列表复制

    2019-09-05 19:03:25
    列表复制 #列表赋值只是赋值地址指针 lst1=[2,4,'asdf','kk',2,'kk'] lst2=lst1 lst2[1]=8 lst1 #lst1.cop()重新开辟空间赋值为lst1 lst1=[2,4,'asdf','kk',2,'kk'] lst2=lst1.copy() lst2[1]=8 lst1 ...
  • 小题3:列表复制

    2018-01-06 11:15:54
    一个列表复制100分怎么复制的快: import time import copy def run1(): a = [1, 2, 3] start = time.clock() for i in range(100): list(a) end = time.clock() print('list方法耗时:%f' % (end - s
  • 列表复制详解

    2018-08-07 11:10:00
    复制但内容一致的情况 首先生成列表list1,list2,查看其中内容,对内容做比较,对内存id做比较: list1 = list(range(5)) list2 = list(range(5)) print(list1) print(list2) print(list1 == list2) ...
  • 转载自——原博客(推荐用法5) ...不幸的是[:]标记法被广泛使用,可能是Python程序员不知道更好的列表复制法吧。 首先我们需要了解Python是如何管理对象和变量。Python没有C语言中的变量。...
  • Python 列表复制的几种方法

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

    千次阅读 2016-07-14 20:32:00
    列表复制 浅拷贝 深拷贝
  • python 数组列表复制

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

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,578
精华内容 5,031
关键字:

列表复制