Python n个列表中项目的所有可能组合

Python n个列表中项目的所有可能组合,python,arrays,list,Python,Arrays,List,我需要开发一个包含所有可能组合的列表,按照n个列表中元素的顺序排列。基本上,我正在尝试找到所有可能的路径,稍后我将在程序的另一部分中使用这些路径 我已经为两个列表编写了一些简单的代码,但问题是我不知道用户会给出多少输入,所以我不得不猜测。目前,我已经定义了一个输出所有可能组合的函数(仅单向,因为它们是路径)。我还一直在测试其他替代方案,如itertools(我认为这可能解决了我的问题),或者使用numpy数组(问题是我的数组不是同构的) 输入列表可能如下所示(3维): 和弦=[[1,4,8,12

我需要开发一个包含所有可能组合的列表,按照n个列表中元素的顺序排列。基本上,我正在尝试找到所有可能的路径,稍后我将在程序的另一部分中使用这些路径

我已经为两个列表编写了一些简单的代码,但问题是我不知道用户会给出多少输入,所以我不得不猜测。目前,我已经定义了一个输出所有可能组合的函数(仅单向,因为它们是路径)。我还一直在测试其他替代方案,如itertools(我认为这可能解决了我的问题),或者使用numpy数组(问题是我的数组不是同构的)

输入列表可能如下所示(3维):

和弦=[[1,4,8,12],[1,4,10,12],[4,7,13,19],[4,9,13,21]] 我的函数可以生成两个列表之间的排列:

def组合(列表1、列表2):
列表=[]
对于列表1中的x:
对于列表2中的y:
list.append([x,y])
返回列表
组合(和弦[0],和弦[1])
此函数按预期工作,但问题是,例如,当我引入
组合(组合(和弦[0],和弦[1]),和弦[3])
,它不单独计算
和弦[0]
和弦[1]
(仍然按预期工作)

编辑:

好的,就像@iBug指出的,一个很好的方法是使用itertools.product():


itertools.product
是您需要的。它需要多个
Iterable
s(列表是Iterable)并生成一个生成器,该生成器对每个列表的所有组合进行循环

见示例:

>对于itertools.product([1,2,3],“abc”,[True,False])中的a、b、c:
...  印刷品(a、b、c)
...
真的吗
一个假的
1 b正确
1b错误
1 c正确
1 c错误
2 a真的吗
2.虚假的
2 b正确
2 b错误
2 c正确
2 c错误
真的吗
3.虚假的
3 b正确
3 b错误
3 c正确
3 c错误
>>>
因此,您的用例将变成:

itertools.product(*chords)

看看
itertools.combines()
。您能为您的
和弦添加预期的输出吗?这有点让人困惑。好吧,基本上是这样的:和弦看起来像[1,4,8,12](它们是四个音符)。然后是一个列表,其中包含同一基础的所有可能注释。之后,所有不同基音的和弦都在同一个列表中,列表和弦。祝贺你提出第一个问题并接受答案!如果您还有其他问题,请不要忘记返回Stack Overflow。很好,似乎是我要找的!!我将尝试一下并确认它是否有效。谢谢,我刚试过,效果很好!!!我将编辑我的原始帖子,展示对我有用的最终答案。谢谢我要检查一下记号
itertools.product(*chords)