当前位置:首页 » 编程语言 » python改变列表的值

python改变列表的值

发布时间: 2023-06-29 07:25:00

python高手求教,两个List怎么只改变一个List中元素的值不引起另一个List的变化

import
List2=.deep(List1)

这样赋值,List2初始值和List1一样,因为是深度复制List1中的元素,所有深层元素都引用的是不同的对象,List1的任何改变不会影响List2

Ⅱ python 为什么我修改列表一个元素会导致所有元素都被修改

sta是所有ser类对象公有的类变量,在一个对象中对其进行修改当然会影响到其他对象中sta的内容。在构造函数中加上self.sta=[]可将sta变为每个对象独立持有的成员变量。

Ⅲ python用for遍历列表时不能修改列表值吗

首先,可以肯定的是,for 循环遍历时可以修改列表值。
那么问题出在哪?在for 循环中的赋值语句magician='the Great' + magician,这个语句并没有改变列表元素,在for magician in magicians中,magician 只是一个得到了列表元素的值的临时变量,修改这个临时变量并不会影响的列表里的值。
原代码相当于:magician =magicians[i], magician ='theGreat'+magician, 很明显,这里没有影响到列表元素,而是只改变了临时变量。
可以使用以下代码:
for i in range(len(magicians)):
magicians[i] = 'the Great' + magicians[i]

Ⅳ 关于python列表的属性传递

Python分为可变类型和不可变类型,一般tuple,string,number等类型不可变,其他如list等是可变类型
如果你用=来赋值可变类型的话就会出现你这种情况,这种情况叫做“浅拷贝”。要实现变其中一个其他不变就不能简单地用=来赋值,要用到一种叫做“深拷贝”的东西。
深拷贝有几种方法:
1.
deep
import

l
=
[]
x
=
.deep(l)
x.append(6)
print
l,
x
2.
slice
l
=
[]
x
=
l[:]
x.append(6)
print
l,
x

Ⅳ Python的赋值与复制

对于Python的初学者,在对象的使用过程中,由于对变量的赋值和对象的复制中的概念模糊,导致程序出错。

例如,下面的代码:

输出结果为:

a = [6,2,3,4,5],
b = [6,2,3,4,5],
c = [1,2,3,4,5]
a等于b?True
a等于c?True
a是b?True
a是c? False

可以看到,a,b, c所指向的对象的值都相同(a==b为True). a和b都是代表同一个对象(a is b为True)。当我们通过变量b对该列表进行修改时,由于a也指向该列表,所以当打印a,b时,我们得到相同的值。 而a和c则是代表不同的对象(a is c为False),所以修改b所指向得列表不会改变c梭子乡的列表的值.

在Python中,所有的变量都代表了对象,即便是简单的数字类型(int, float, bool),也是以对象的形式存在的。我们看下面的代码:

输出结果是:

a==b为True
a is b为True

可见,a, b都是指向同一个对象。接下来,进行下面的操作,

输出结果是:

a = 1, b = 2
a is b为False

与前面的列表不同,当我们对b做修改时,实际上是给b赋予了一个新生成的对象,对数值类型来说,所有的数值运算都会创建一个数值对象,并将这个对象指定给变量。因此,a与b指向了不同的对象,数值也不同。

再回过头来看列表对象,

我们知道,b是与a指向同一对象的变量,使用b对该对象进行修改,与使用a对该对象进行修改,效果是完全一样的。如果我们需要需要一个与a完全相同又与a相互独立的列表,那么就需要复制这个对象,也就是新建一个内容和源对象相同的对象。

对于列表来说,最简单的复制方法是通过下标索引的方式创建新的列表:

对于各种数据类型通用的对象拷贝复制,我们可以使用python内建的模块。

对于复杂对象(如嵌套列表)的复制,则需要注意区分浅拷贝和深拷贝。我们来看下面的代码:

得到的结果是:
a[0] is b[0]为 True
a[0] is c[0]为 False
a = [[-1, 2, 3], [4, 5, 6]]
b = [[-1, 2, 3], [7, 8, 9]]
c = [[1, 2, 3], [4, 5, 6]]
a[1] is b[1]为False

从上面的代码我们可以看到,函数为浅拷贝,只拷贝了对象的外层,而对象内部所包含的对象仍然指向原有的对象。而deep则为深拷贝,对象内部的对象也进行了复制。

以上我们对变量的赋值和对象的复制做了更加深入的分析。在具体的使用中,我们需要根据具体来决定使用赋值、浅拷贝、深拷贝。

热点内容
怎么查身份证密码 发布:2025-04-22 23:12:07 浏览:206
如何用服务器跑github项目 发布:2025-04-22 23:10:55 浏览:947
ccs编译dsp程序的指令 发布:2025-04-22 23:06:42 浏览:368
映射盘符脚本 发布:2025-04-22 22:55:35 浏览:259
王者荣耀安卓系统怎么转换到苹果 发布:2025-04-22 22:53:29 浏览:986
emobile7服务器地址如何查看 发布:2025-04-22 22:32:51 浏览:763
房间的秘密码是什么 发布:2025-04-22 22:32:43 浏览:121
文件夹前面多了选择框 发布:2025-04-22 22:32:40 浏览:704
迅雷网ftp 发布:2025-04-22 22:30:02 浏览:622
鼠标驱动源码 发布:2025-04-22 22:29:55 浏览:768