Python 与#x27=';和';追加';在本例的列表中?

Python 与#x27=';和';追加';在本例的列表中?,python,list,Python,List,我知道列表是一种可变的数据对象集合,但为什么输出不同呢。 我想他们应该是一样的 a=[1] b=a b=[1,2] 印刷品(a) 输出: [1] a=[1] b=a b、 附加(2) 印刷品(a) 输出: [1,2] 在第一个示例中,您正在覆盖: a=[1] b=a # b=[1] and b=a b=[1,2] # b=[1,2] but not a 在第二个示例中,您应用了内置于列表中的函数: a=[1] b=a # b=[1] and b=a b.appen

我知道列表是一种可变的数据对象集合,但为什么输出不同呢。 我想他们应该是一样的

a=[1]
b=a
b=[1,2]
印刷品(a)
输出:

[1]
a=[1]
b=a
b、 附加(2)
印刷品(a)
输出:

[1,2]

在第一个示例中,您正在覆盖:

a=[1]
b=a     # b=[1] and b=a
b=[1,2] # b=[1,2] but not a
在第二个示例中,您应用了内置于列表中的函数:

a=[1]
b=a         # b=[1] and b=a
b.append(1) # applies append to b which is a so a.append is done
a=[1]
b=a
b=[1,2]
印刷品(a)
执行此操作时,
b
的值将被重新分配,因此将失去与
a
的连接

a=[1]
b=a
b、 附加(2)
印刷品(a)

但是在这里,追加到
b
意味着在内存中的相同列表追加一个值。由于
a
b
仍然引用相同的内存,因此打印
a
的结果与
b
相同,因为它们只是列表的两个不同别名。

第一种情况,新列表不同的内存地址。第二种情况是,为b分配与a相同的内存地址,在第一个示例中,当您创建一个新列表并将其分配给b时,它们指向相同的数据。在第二个示例中,只有一个列表,a和b都引用它。