首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python列表复制-混乱

Python列表复制-混乱
EN

Stack Overflow用户
提问于 2019-08-03 23:05:23
回答 5查看 95关注 0票数 2

Python初学者在这里。阅读关于列表引用、浅拷贝和深拷贝的文章时,尝试了以下几点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a = ['a', 'b', 'c']
b = list(a)
a[0] = 'A'

预期输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>>a
['A', 'b', 'c']
>>>b
['A', 'b', 'c']

实际输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>>a
['A', 'b', 'c']
>>>b
['a', 'b', 'c']

但是,它在以下情况下有效:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xs = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> ys = list(xs)  # Make a shallow copy

xs[1][0] = 'X'

>>> xs
[[1, 2, 3], ['X', 5, 6], [7, 8, 9]]
>>> ys
[[1, 2, 3], ['X', 5, 6], [7, 8, 9]]

有人能解释一下我是不是遗漏了什么吗?谢谢

Python 3.7.4

文章链接:https://realpython.com/copying-python-objects/

EN

回答 5

Stack Overflow用户

发布于 2019-08-03 23:38:51

这是因为list()函数生成了一个新列表,如果您在赋值之后对原始列表进行了更改,则新列表不会更改。

您可以使用变量值执行此操作,但要小心,例如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var = 'a'
list1 = [var, 'a', 'b']
list2 = list1

print(list1)
print(list2)

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
['a', 'a', 'b']
['a', 'a', 'b']

您可以更改var的值,除非您执行以下操作,否则两个列表都将更改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var = 'a'
list1 = [var, 'a', 'b']
var = 'c'
list2 = list1

print(list1)
print(list2)

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
['a', 'a', 'b']
['a', 'a', 'b']

为什么?因为当您执行此操作时,list1=[var, 'a', 'b'] var的值为'a',但是当您更改其值时,这不会影响list1,因为它保存了var本身的值,因此list2也不会

票数 2
EN

Stack Overflow用户

发布于 2019-08-03 23:07:22

list()会创建一个新列表,这意味着对原始列表的更改不会影响新列表。

票数 1
EN

Stack Overflow用户

发布于 2019-08-03 23:13:06

当您说b = list(a)时,您正在创建一个新的列表b,它的值与a中的值相同。在这一点上,每个列表的元素是相等的,但它们不是相同的对象。也就是说,其中一个对象的更改不会反映在另一个对象中。它们是独立的。

如果您说b = a,则表示ba是引用同一对象的名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57342656

复制
相关文章
python python列表对象复制
赋值后的对象内存地址不同,但是列表内对象地址相同。 如果修改新列表内的数组对象,老列表同步修改。 如果修改列表内的数值对象,老列表不变。
葫芦
2019/08/21
1.2K0
【说站】python中用切片复制列表
(1)需要根据现有列表制作新列表,可以制作包括列表整体在内的切片,方法是省略起始索引和终止索引。
很酷的站长
2022/11/23
3910
【说站】python中用切片复制列表
【说站】python切片复制列表的本质
1、不指定开始和结束的索引[:],这样得到的切片就可以包含整个列表,然后给切片一个新的变量,从而实现复制列表。
很酷的站长
2022/11/26
5000
【说站】python切片复制列表的本质
python3-列表的深浅复制
# Auther: Aaron Fan names = ["aaron", "alex", "james", "meihengfan"] #复制一份列表 #浅复制 (注意,这只是一个浅复制,只能复制第一层列表里面的东西,如果列表里面还有一层列表,那么那一层的列表只是把物理地址指向过去了,但是并没有复制过来) #在day2第9个视频,有详细讲这个浅复制的作用,这里不再详细注释 person = ["name", ["saving", 100]] ''' 浅复制的方法有3种: p1 = person.
py3study
2020/01/06
3900
C# 复制列表
List<Fex> b = a.ToList(); 可以把列表a到列表b,对b进行删除、添加,不会对a造成元素改变。
林德熙
2018/09/18
7980
C# 复制列表
List<Fex> b = a.ToList(); 可以把列表a到列表b,对b进行删除、添加,不会对a造成元素改变。
林德熙
2022/08/04
3790
Python读书笔记9(列表排序与复制)
我们针对列表需要进行整体的排序,今天就和大家聊一聊列表的排序应用。 一、永久性排序 什么是永久性排序呢,之前很多方法比如针对字符串的title方法,针对列表的重复用法,改变的仅仅是显示,原对象内容并
用户1332619
2018/03/08
7270
Python读书笔记9(列表排序与复制)
C#——list列表复制
声明:ArrayList a, 仅仅只是声明了一个list变量,其未来作用相当于C++中的引用变量,亦或者相当于一个对象块的索引,但并未为其分配具体的完整的对象所需要的内存空间,其所分配的空间仅仅只是"a"变量所需空间;
vv彭
2021/03/08
2.1K0
python3 复制列表(不要用“=”号,用copy!!!!!!)
但是,对于python中的数据类型 list而言,复制列表应该用list.copy(),而不是用列表。
种花家的奋斗兔
2020/11/23
4770
解决Recyclerview列表中使用CheckBox导致下滑时选中状态混乱
  今天用recyclerview时候发现checkbox重复使用会导致OnCheckedChangeListener 出现一个不太友好的问题,问题是这样的:Recyclerview 会回收使用组件,回收checkbox的时候会触发OnCheckedChangeListener 事件,导致我们写的listener中的逻辑会被打乱。   比如我选中了一个checkbox,那么当view滚动导致这个checkbox 滑动出可视范围的时候 ,OnCheckedChangeListener事件会被触发,这样相当于自动把我选中的取消了。
饮水思源为名
2018/09/06
2.2K0
Python-100例(7-8) 复制列表 & 打印乘法口诀
这次是分享 Python-100 例的第 7-8 题,分别是复制列表和打印乘法口诀,这两道题目都比较简单。
kbsc13
2019/08/16
7400
【Python】列表3个修改数据方法和复制数据方法
列表数据修改操作主要从三个方面去介绍,第一是修改指定下标的数据,第二是使用逆序函数reverse(),第三个是排序sort()。接下来复制列表数据,一般做数据修改的时候都会先复制一份原始数据再进行操作。这四种方法都是相对比较简单的是python基础教程,看后多多练习就可以了,更深入的了解可以去看官方文档。
python自学网
2022/04/03
7280
【Python】列表3个修改数据方法和复制数据方法
Python列表赋值,复制,深拷贝以及5种浅拷贝详解
在列表复制这个问题,看似简单的复制却有着许多的学问,尤其是对新手来说,理所当然的事情却并不如意,比如列表的赋值、复制、浅拷贝、深拷贝等绕口的名词到底有什么区别和作用呢?
一墨编程学习
2019/05/17
5.1K0
Python 列表
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的博客 🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 🥭本文内容:Python 列表 更多内容请见👇 Python 入门基础专栏 Python 字符串 Python 常用字符串方法 ---- Python 列表 1.创建列表 1.1 list 函数 1.2 方括号 1.3 空列表 2.列表基本操作 2.1 元素修改 2.2 元素删除 2.3 切片赋值 2.4 多重赋值 3.列
小嗷犬
2022/11/15
2.9K0
C语言混乱代码
偶然看到的这么个东西,话说这个活动很久了。看了代码果然不一般啊,不一般。 /* + + + +
obaby
2023/02/24
3.4K0
Python列表
要让numbers1和numbers2指向不同的列表,必须将numbers2关联到numbers1的副本,就用到copy
王大力测试进阶之路
2022/06/07
1.7K0
python列表
>>> courses = ['Linux', 'Python', 'Vim', 'C++']
互联网老辛
2018/10/18
2.1K0
Python——列表
列表是python中最基础,最强大的数据结构之一。python的列表可以容纳任何东西,其中的元素可以没有任何关系。python的列表就像一个可以容纳万物的容器。但是需要注意,这个容器中的数据是有序的。 在Python 中,用方括号([])表示列表,并用逗号分隔其中的元素。下面是一个例子:
zy010101
2021/03/11
1.9K0
Python——列表
python列表
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中
织幻妖
2021/03/05
2.1K0
python列表
点击加载更多

相似问题

python打印列表时的混乱

33

浅层复制操作混乱

16

复制python列表

30

Python:复制列表

21

Python列表复制

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文