当我没有给b分配一个空列表时,它为什么打印[[1234],[1234]]

2024-03-29 10:19:06 发布

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

a=[1234]
#b=[]
b.append(a)
print(b)
output: [[1234], [1234]]
a=[1234]
b=[]
b.append(a)
#print(b)
#output:[[1234]]

我无法理解上面的代码,当我将一个空列表分配给b时,它正在打印[[1234]],但如果我将其附加到b时,它将打印出[[1234],[1234]]

这里发生了什么事


Tags: 代码列表outputprintappend
2条回答

如果您使用jupyter-notebook,您可能会得到这种行为,我假设您运行相同的单元格2次,一次使用b=[]取消注释,一次使用#b=[],从一次运行到另一次运行jupyter,变量存储在内存中,因此对于第二次运行,您的b已经等于[[1234]],这是您的第二次运行的等效代码jupyter cell

b = [[1234]] # aready in memory

a=[1234]
#b=[]
b.append(a)
print(b)

输出:

[[1234], [1234]]

您可能已经在某个地方定义了b。第二次设置b=[]时,b被清除。不能对未定义的数组调用append。如果仅运行以下代码:

a=[1234]
b.append(a)
print(b)

当它通过解释器时,应该会出现以下错误

NameError: name 'b' is not defined

相关问题 更多 >