python - 为什么 [[]]*10 是在 python 中创建 10 个空列表的方法,而不是 [[]*10]?
问题描述
为什么[[]]*10
要列出十个空列表?[[]*10]
对我来说更有意义。
解决方案
我认为对你最好的解释可能是看[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]]
>>>
推荐阅读
- r - 微分方程函数随时间而不同(在 R 中)
- javascript - 为什么 Tone JS 在 Svelte 组件中表现不佳?
- jquery - jquery - 当按钮可见时执行
- postgresql - 在 FIFO SQL 中计算价格
- azure - Azure powershell:查找哪个主体创建或修改了给定主体
- json - React-simple-map“JSON 中位置 0 处的意外令牌 <”
- html - 如何将 li 菜单与下拉菜单与类水平对齐
- android - 三星奥利奥设备中未显示通知
- javascript - Array.sort() 在 Firefox 和 Chrome/Edge 中的行为不同
- apache-spark - 如何使用 UDF 对 Spark SQL 结果进行后处理