繁体   English   中英

在Python中不重复计算排列

[英]Calculating permutations without repetitions in Python

我有两个项目列表:

A = 'mno'
B = 'xyz'

我想生成所有排列,无需替换,模拟将A中项目的所有组合替换为B中的项目,而不重复。 例如

>>> do_my_permutation(A, B)
['mno', 'xno', 'mxo', 'mnx', 'xyo', 'mxy', 'xyz', 'zno', 'mzo', 'mnz', ...]

这对我来说是直截了当的,但是我知道Python的starndard itertools模块 ,我相信它可能已经实现了这一点。 但是,我无法识别实现此确切行为的函数。 我可以用这个模块来完成这个功能吗?

这是你需要的:

["".join(elem) for elem in itertools.permutations(A+B, 3)]

如果您希望将相同三个字母的所有排序折叠成单个项目(例如,以便'mxo''mox'不会各自单独出现在输出中),则用combinations替换permutations

你正在寻找itertools.permutations

来自文档:

元素根据其位置而不是其价值被视为唯一元素。 因此,如果输入元素是唯一的,则不会有重复值。

要只使用唯一的,词汇排序的排列,您可以使用以下代码:

import itertools

A = 'mno'
B = 'xyz'

s= {"".join(sorted(elem)) for elem in itertools.permutations(A+B, 3)}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM