列表排列、组合和不组合列表位置

问题描述 投票:0回答:1

我在教程上找到了一个很好的用于列表排列、组合和不组合列表位置的脚本并进行了修改。

这是脚本:

`your text`
list1 = [1]
list2 = [6, 7, 8]
list3 = [9, 10, 11]
list4 = [12]

print("The original lists are : " + str(list1) +
      " " + str(list2) +
      " " + str(list3) +
      " " + str(list4))

res = [[i, j, k, l] for i in list1
                for j in list2
                for k in list3
                for l in list4]

print("All possible permutations are:")
for perm in res:
    print(*perm)

结果是:

1 6 9 12
1 6 10 12
1 6 11 12
1 7 9 12
1 7 10 12
1 7 11 12
1 8 9 12
1 8 10 12
1 8 11 12

我的问题是我还想要一些列表的排列结果,例如列表 3 和列表 4,将此结果添加到前一个结果中:

1 9 6 12
1 10 6 12
1 11 6 12
1 9 7 12

等等...

这可能吗?我找不到将其添加到脚本中的教程/解决方案。

我对Python编程还很陌生。 预先感谢。

python list permutation variant invariants
1个回答
0
投票

我不确定你想要达到什么结果。但据我了解你的问题,你想从列表

res
list1
list2
list3
创建列表
list4
,其中应包含以下值:

1  6  9 12
1  6 10 12
1  6 11 12
1  7  9 12
1  7 10 12
1  7 11 12
1  8  9 12
1  8 10 12
1  8 11 12
1  9  6 12
1 10  6 12
1 11  6 12
1  9  7 12
1 10  7 12
1 11  7 12
1  9  8 12
1 10  8 12
1 11  8 12

如果这是您的目标,您可以通过扩展代码轻松实现它,如下所示:

list1 = [1]
list2 = [6, 7, 8]
list3 = [9, 10, 11]
list4 = [12]

print("The original lists are : " + str(list1) +
      " " + str(list2) +
      " " + str(list3) +
      " " + str(list4))

res = [[i, j, k, l] for i in list1
                for j in list2
                for k in list3
                for l in list4]

res_2 = [[i, k, j, l] for i in list1
                for j in list2
                for k in list3
                for l in list4]

for perm in res_2:
    res.append(perm)

print("All possible permutations are:")
for perm in res:
    print(*perm)
© www.soinside.com 2019 - 2024. All rights reserved.