注册 登录
编程论坛 Python论坛

关于变量赋值的问题Python

睡觉的虫 发布于 2018-08-17 18:23, 1550 次点击
菜鸟看书自学 看到一个东西很奇怪

就是num=[1,2,3]
n=num
后,修改num,n的值也一并修改 很看不懂
删除num的话,n也还在

如果n=num+[4]的话,num修改,如
num.reverse()
n
[1,2,3,4]
是不变得,仍然是当时的num+[4]

这两个主要是n=num的时候 好像是直接指向num的内存 而不是新创建一个??但是第一个例子删除num的话,n也还在

而且如果num=3
n=num
修改num=2,n仍然=3
所以定义num的内容不是列表而是数的话,又不一样了??

到底怎么回事呢 好懵

新手只有20分 全送了 求大神
3 回复
#2
wenziyang2019-02-13 22:40
代码?
#3
w10312716172019-02-15 12:32
列表类型是引用类型,n=num引用的是同一个地址(num的地址),修改num就会改变地址里面值的内容,然后因为n引用的是相同的地址,所以n的值也会变掉。
n=2是值类型(2是int型的)
你可以看看值类型和引用类型的区别
#4
风卷浪起2021-11-17 13:22
你的意思就是说,你将num的值关联到n,所以它们会一起修改,你应该将num的值复制给n,像这样:n = num[:]。
(有可能需要在Python3.7以上的版本用)
1