【发布时间】:2021-04-15 22:50:06
【问题描述】:
我有一个包含一组x 可变项的列表。我想创建另一个列表,其中 x 可变项集重复 n 次。但是,这些项目必须是对唯一对象的引用,而不是对原始对象的简单引用。
例如,让a = [[1],[2],[3]]。假设我希望里面的数字重复n=3 次,即[[0],[2],[3],[1],[2],[3],[1],[2],[3]]。
我可以使用a * 3 轻松做到这一点。问题是如果我更改a[0][0] = 0,那么我将得到a == [[0],[2],[3],[0],[2],[3],[0],[2],[3]],这是不可取的,因为我只想更改第一个元素。有没有其他方法可以做到这一点?
【问题讨论】:
-
只是一些迂腐的:
1不是可变的,尽管[1]是可变的。当您执行lst[idx] = val时发生的变化是lst[idx]的绑定 已更改,绑定引用的原始值保持不变。一旦你理解了底层的绑定/不变性概念,你的 Python 技能就会达到一个新的水平。 -
@paxdiablo。好的,我编辑了我的问题以供将来参考。
标签: python list-comprehension multiplication replicate