首页 > 解决方案 > 计算排列 4 个字符长,每个结果 2 个字符

问题描述

from itertools import permutations
perm=permutations(['A','B','C','C','D','D','D','D'],4)
for i in perm:
  print (i)

我怎么能打印一个排列,其中 perm 中的值只打印一系列带有 2 个字符的字母(请原谅我的英语)

示例:ADDD、DADD、BDDD、CCDD、CDDD 等(每个排列只有 2 个字符)

标签: pythonpermutation

解决方案


我认为为此你必须生成所有组合,并过滤到你想要的条件。

保持这一点相同:

from itertools import permutations
perm = permutations(['A', 'B', 'C', 'C', 'D', 'D', 'D', 'D'], 4)

但是,通过使用列表理解,只保留满足您条件的元素。将元素转换为集合,并计算集合的长度。像 ('A', 'B', 'B') 这样的元素被转换为 {'A', 'B'}。

perm = [x for x in perm if len(set(x))==2]

推荐阅读