2024-04-26 05:35:10 发布
网友
我有一个关于在python中使用排序约束进行排列的问题。对于这个问题,最好对这个问题加以说明
Column 1 | Column 2 | Column 3 1 | a | ! 2 | b | @ 3 | c | #
现在我想生成所有可能的排列,保持列的顺序,使列1,列2,列3之前,列1
。。。等等
很明显,您可以通过编写嵌套循环来实现这一点,但我很好奇是否有一种python方法可以做到这一点。在
你要找的是笛卡尔积,而不是排列。为此,我们有itertools.product。
itertools.product
import itertools columns = [ ['1', '2', '3'], ['a', 'b', 'c'], ['!', '@', '#'] ] result = ['-'.join(thing) for thing in itertools.product(*columns)]
因此,我们有result:
result
如您所见,itertools.product还保留了每个参数中的顺序,以便!位于{}之前#以此类推,以防您也需要这样做。
!
#
顺便说一下,itertools.product(*columns)中的*是一个argument unpacking operator。
itertools.product(*columns)
*
你要找的是笛卡尔积,而不是排列。为此,我们有
itertools.product
。因此,我们有
^{pr2}$result
:如您所见,}之前
itertools.product
还保留了每个参数中的顺序,以便!
位于{#
以此类推,以防您也需要这样做。顺便说一下,
itertools.product(*columns)
中的*
是一个argument unpacking operator。相关问题 更多 >
编程相关推荐