我有两个项目清单:
A = 'mno'
B = 'xyz'
我希望生成所有排列,无需替换,模拟将A中项目的所有组合替换为B中的项目,而不重复。 e.g。
>>> do_my_permutation(A, B)
['mno', 'xno', 'mxo', 'mnx', 'xyo', 'mxy', 'xyz', 'zno', 'mzo', 'mnz', ...]
这对我来说是直截了当的,但是我知道Python的标准itertools module,我相信它可能已经实现了这一点。但是,我无法识别实现此确切行为的函数。我可以用这个模块来实现这个功能吗?
答案 0 :(得分:7)
这是你需要的:
["".join(elem) for elem in itertools.permutations(A+B, 3)]
并将permutations
替换为combinations
,如果您希望将相同三个字母的所有排序合并为一个项目(例如'mxo'
和'mox'
并非每个都单独出现在输出中。)
答案 1 :(得分:3)
答案 2 :(得分:0)
要只使用唯一的,词汇排序的排列,您可以使用以下代码:
import itertools
A = 'mno'
B = 'xyz'
s= {"".join(sorted(elem)) for elem in itertools.permutations(A+B, 3)}