LIST 在 python 的异构行为中引用单维列表


a = [0]*4
a[0]= 1
print(a)

输出是 [1,0,0,0],而根据 python 中列表的奇怪行为中解释的列表行为,它应该是 [1,1,1,1],其中说 * 创建对对象的引用而不是值的副本。 请解释一下

是的,使用重复运算符*创建对列表中对象的多个引用。但是,a[0] = 1不修改这些对象,它也会修改列表

如果可以修改列表中的对象(在这种情况下,不能修改,因为int对象是不可变的(,然后确实修改了这些对象,则会看到相同的行为。

请注意,即使您将a[0] = <something>与可变对象一起使用,它也不会以这种方式运行:

>>> x = [[]]*3
>>> x
[[], [], []]
>>> x[0] = [1] # modify the list
>>> x
[[1], [], []]

您必须实际修改列表中的对象

>>> x = [[]]*3
>>> x
[[], [], []]
>>> x[0].append(1) # modify the in the list
>>> x
[[1], [1], [1]]

您缺少的根本区别在于修改列表本身与列表中对象之间的区别。

另请注意,list对象没有维度

最新更新