首页 > 解决方案 > 为什么 [[]]*10 是在 python 中创建 10 个空列表的方法,而不是 [[]*10]?

问题描述

为什么[[]]*10要列出十个空列表?[[]*10]对我来说更有意义。

标签: pythonlist

解决方案


我认为对你最好的解释可能是看[1, 2] * 4,这给了你[1, 2, 1, 2, 1, 2, 1, 2]。与左边的列表相乘会复制列表的元素,而不是列表本身。

[] * 10制作十份没有任何元素的副本并给你[]

[[]] * 10给你十份[],这就是你要找的。


@blckknght 指出,值得强调的是, * 重复列表的元素,但元素本身不会被复制。

>>> X = [1, 2, 3, 4, 5]
>>> Y = [X] * 2
>>> Y
[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]

Y 现在包含 X 本身两次,而不是 X 的两个副本。

>>> Y[0] is X
True
>>> X[0] = 'a'
>>> Y
[['a', 2, 3, 4, 5], ['a', 2, 3, 4, 5]]
>>> 

推荐阅读