python - 使用python获取列表的排列

标签 python list loops combinations permutation

假设我有列表 a:

a = [0, 0, [0, 1], [0, 1, 2]]

其中 a 可以是任意长度,它的成分可以是任意长度,我想生成一个新列表,该列表可以是值的任意组合,这样对于给定的示例,我将返回:

b = [[0,0,0,0],
     [0,0,0,1],
     [0,0,0,2], 
     [0,0,1,0],
     [0,0,1,1],
     [0,0,1,2]]

我认为这只是循环的问题,但我将不胜感激。

谢谢

最佳答案

使用 itertools.product :

>>> import itertools
>>> a = [0, 0, [0, 1], [0, 1, 2]]
>>> a2 = [x if isinstance(x, list) else [x] for x in a]
>>> #  = [[0], [0], [0, 1], [0, 1, 2]]
>>> list(itertools.product(*a2))
[(0, 0, 0, 0), (0, 0, 0, 1), (0, 0, 0, 2), (0, 0, 1, 0), (0, 0, 1, 1), (0, 0, 1, 2)]

关于python - 使用python获取列表的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27709367/

相关文章:

c# - 如何将项目添加到 IEnumerable<T> 集合?

arrays - 具有变量转换的多元回归自动化

需要运行 python 脚本。由于某种原因我不能这样做

python - 按项目中的子字符串拆分列表并保留分隔符

python - 检查列表是升序还是降序(使用 FOR)

javascript - 在 JavaScript 的 for 循环中获取隐藏的输入值

javascript - Angular 7 迭代表

Python:向 numpy 一维数组添加一列

python - 修复 torchvision 变换的随机种子

python - 排列不起作用