为什么输出不变?

2024-09-29 06:22:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为周三的Python决赛学习。 我对列表中的参考资料有一些问题。 我需要解释一下发生了什么事

我试着用谷歌搜索老师的笔记,但没有结果

如果我有以下python代码:

(甲)

a = [1,2]
b = [1,[2], 3]
c = [a] + [b]
b = 0
print(c)

但如果我说:

第二部分)

a = [1,2]
b = [1,[2], 3]
c = [a] + [b]
b[0] = -1
print(c)

(甲) c的输出=[[1,2],[1,2,3]]

为什么c不打印为[[1,2],[0]]

第二部分) c的输出将是=[[1,2],-1,2,3]]

在这种情况下,它似乎修改了对象c内部对b的引用,但在另一种情况下却没有修改

我必须为此画一个箭头图,所以对于引用发生了什么,以及为什么如果我通过索引改变b,它似乎会在c内部改变b,这真的很混乱,但是如果我改变b所指的,c仍然是指b的旧值,而不是新值


Tags: 对象代码列表情况老师箭头笔记print
1条回答
网友
1楼 · 发布于 2024-09-29 06:22:04

c = [a] + [b]将使用变量a和变量b的值,这两个值都是列表b = 0更改了b的内容,使其忘记了之前持有的值(该值保持不变,只是不再被b引用)b[0] = -1不改变b,它改变b引用的值;由于当前c中的列表也引用了该值,因此您将观察到c中的更改

我得到的最好建议是通过非常有效的Python可视化工具运行这两段代码:snippet 1vssnippet 2,并观察程序如何运行(按“可视化执行”按钮)

相关问题 更多 >