从n个整数列表(可能长度不等)中进行所有可能的n个长度排列[重复]

Posted

技术标签:

【中文标题】从n个整数列表(可能长度不等)中进行所有可能的n个长度排列[重复]【英文标题】:Make all possible n length permutations from n lists of integers (of possibly unequal length) [duplicate] 【发布时间】:2015-03-23 05:01:02 【问题描述】:

例子:

list1 = [0,1,2]
list2 = [0,1]
list3 = [0,1,2,3]

那么排列将是:

0,0,0
0,0,1
0,0,2
0,0,3
0,1,0
0,1,1
0,1,2
0,1,3
1,0,0
1,0,1
1,0,2
1,0,3
1,1,0
1,1,1
1,1,2
1,1,3

...依此类推,有 3 x 2 x 4 = 24 个排列。

列表的数量不一定是 3(它们可以是任何数字,n)并且顺序很重要,因此 0,0,1 与 0,1,0 不同。

我知道我可能不得不以某种方式使用 itertools,但不知道如何解决这个问题。由于列表的数量不同,我不能只创建三个嵌套循环。

这是this question 的变体,但列表的数量不同且顺序很重要。

感谢任何帮助或提示。谢谢。

【问题讨论】:

您没有找到好的副本,因为您将“排列”与“笛卡尔积”混淆了 谢谢,它确实是一个笛卡尔积,这正是我想要的。我把它错误地命名为“排列”,我的错。 @user2898278 这不是“你的坏”——别担心。有时只是不知道事情的名称发生。您在研究和展示输入/输出示例方面表现出了努力——这是一个很好的问题。 【参考方案1】:
list1 = [0,1,2]
list2 = [0,1]
list3 = [0,1,2,3]
listOfLists = [list1,list2,list3]
for list in itertools.product(*listOfLists):
    print(list)  

【讨论】:

以上是关于从n个整数列表(可能长度不等)中进行所有可能的n个长度排列[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用递归从 char 列表中打印 n 长度组合

给出两个整数n和k,返回从1到n中取k个数字的所有可能的组合

从给定的单词列表中生成具有“N”长度的所有可能组合(寻找不重复)

是否有可能在比(n 选择 3)更好的时间内找到可以从长度列表中形成的三角形数量?

如何(廉价)计算 n 个可能元素的所有可能的长度-r 组合

交错2个长度不等的列表[重复]