python - 不寻常的排列

标签 python algorithm combinations permutation

我有几个列表:

a = [1,2,3]
b = [4,5,6]
c = [7,8,9,10]

如何生成所有组合,例如:

a[0], b[0]
a[1], b[1]
a[2], b[2]
a[0], b[0], c[0]
a[1], b[1], c[0]
a[2], b[2], c[0]
a[1], b[1], c[1]
a[2], b[2], c[2]
a[0], b[0], c[3]
a[1], b[1], c[3]
a[2], b[2], c[3]
.....

每个列表中一次只能有一个值。

想象两个或多个列表,比如 a=[1,2,3] 和 b=[4,5,6] 和 c=[7,8,9] 我想要所有可能的对,比如 (a[0 ], b[0]),(a[1], b[1]), (a[0], b[0], c[0])...

最佳答案

根据您的示例,您似乎只需要 abc 类型的排列。因此,您要么:1) 显式构建您的“排列”,要么 2) 构建所有排列并过滤掉您不想要的排列。

显式构造

  1. 构建您的 list_of_lists,即 [['a1', 'a2', 'a3'], ['b1', 'b2'], ['c1']]
  2. 建立你的排列。使用 itertools.product,参见 All combinations of a list of lists
  3. 从您的每个排列中,您可能希望在一个循环中创建多个排列。例如,从 ('a1','b1','c1') 得到 ('a1','b1','c1')(' a1','b1')。这很容易。

您可以填补空白。

构建所有并过滤掉

...可能只有在您需要与我理解的(略有)不同的东西时才有用。

关于python - 不寻常的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39190036/

相关文章:

python - 跨纪元的恒定准确性

python - 如何将不同行的值分配给新列

python - 查找固定大小的所有独特组合以达到给定的平均范围

数组中元素的组合

regex - 是否有 "match the following in any order"或 "match any permutation"的正则表达式?

python - 使用 Flask 在另一个页面中显示选定的表单项

python - 何时在 Python 类型提示中使用 IO[str]/IO[bytes] 和 TextIO/BinaryIO?

编译多个反向排列

java - 为什么这个java优雅的配对方法没有给出正确的结果?

java - 如何使用逻辑门创建 if 语句?