首页 > 解决方案 > 创建重复 N 次的可变项列表

问题描述

我有一个包含一组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]],这是不可取的,因为我只想改变第一个元素。有没有其他方法可以实现这一目标?

标签: pythonlist-comprehensionmultiplicationreplicate

解决方案


itertools有一个方法叫做repeat. 只需将其与chain.

from itertools import repeat, chain

a = [1,2,3]

b = list(chain(*repeat(a, 3)))

>>> b
[1,2,3,1,2,3,1,2,3]

推荐阅读