计算 4 个字符长的排列,每个结果有 2 个字符

counting a permutation 4 characters long with 2 characters on each result

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 个字符)

for i in perm:
    if len((set(list(i))) == 2:
       print (i)

假设我是 ABAA
list(i) 将导致 [A,B,A,A]
的 set() 将导致 {A,B}
那么其中的 len() 将是 2

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

保持这一点不变:

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]