Skip to main content
 首页 » 编程设计

列表初始化的Python列表

2025年05月04日22落叶

我知道

[[]] * 10 

将给出 10 个相同的空引用,并且

[[] for i in range(10)] 

将给出 10 个空列表。但在这个例子中:

def get_list(thing): 
  return [thing for i in range(10)] 
a = get_list([]) 
a[0].append(1) 
print(a) 

为什么结果又是

[[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]] 

编辑:

不同于问题 List of lists changes reflected across sublists unexpectedly ,我知道 Python 不会在 [x]*10 中进行复制。

但是为什么 [] 在 [[] for i in range(10)] 中是特殊的?我认为这是不一致的。 Python 不是创建一个空列表 [] 然后传递给 [ ___ for i in range(10)],而是按字面意思理解“[]”并执行“[]”每 i.

请您参考如下方法:

那是因为 thing 是同一个列表。

在 [[] for i in range(10)] 中,每次都会生成一个新列表。

在 [thing for i in range(10)] 中,它始终是名为 thing 的列表。