Python中列表和字符串的赋值问题


在Python中,列表变量可以直接进行赋值,如下:

a = [1,2,3,4]
b = a
print(b)

结果会显示 [1,2,3,4]

字符串也是一样的可以赋值,但是Python中并不是将列表或字符串复制一份再传给新变量,而是传地址

例如:

a = [1,2,3,4]
b = a
a[0] = 5
print(a)
print(b)

结果会显示

[5,2,3,4]
[5,2,3,4]

可以看到 b 会随着 a 改变

如果不知道这个性质的话,写程序时会出现莫名其妙的bug

如果要复制一份 a 传给 b ,可以用以下代码

a = [1,2,3,4]
b = a[:]
a[0] = 5
print(a)
print(b)

此时输出为

[5,2,3,4]
[1,2,3,4]

这种方法就是将 a 复制了一份传给 b

当然,基本只在列表中用到,字符串是不允许修改的,也就不会出现上面的问题

a = 'hello'
a[0] = 'H'
#这里将会报错,字符串不允许修改

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM