有序列约束排列Python

2024-04-26 05:35:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于在python中使用排序约束进行排列的问题。对于这个问题,最好对这个问题加以说明

Column 1 | Column 2 | Column 3
1 | a | !
2 | b | @
3 | c | #

现在我想生成所有可能的排列,保持列的顺序,使列1,列2,列3之前,列1

^{pr2}$

。。。等等

很明显,您可以通过编写嵌套循环来实现这一点,但我很好奇是否有一种python方法可以做到这一点。在


Tags: 方法排序顺序column嵌套循环pr2
1条回答
网友
1楼 · 发布于 2024-04-26 05:35:10

你要找的是笛卡尔积,而不是排列。为此,我们有itertools.product

import itertools

columns = [
    ['1', '2', '3'],
    ['a', 'b', 'c'],
    ['!', '@', '#']
    ]

result = ['-'.join(thing) for thing in itertools.product(*columns)]

因此,我们有result

^{pr2}$

如您所见,itertools.product还保留了每个参数中的顺序,以便!位于{}之前#以此类推,以防您也需要这样做。

顺便说一下,itertools.product(*columns)中的*是一个argument unpacking operator

相关问题 更多 >