Python排列组合计算

测试的时候有个筛选组合,本来是数学公式无奈,高中的排列组合已经 忘记差不多了,所以只能用代码来处理了。

要求: 下面的选项5选2,和5选3,不重复
A/B和B/A 以及 A/B/C和B/A/C和C/B/A算同一个

chars = ['A', 'B', 'C', 'D', 'E']

手动计算:
5选2

chars = ['A', 'B', 'C', 'D', 'E']

count = 0
for index, x in enumerate(chars):
    sub = chars[index + 1:]
    if len(sub) > 0:
        for b in sub:
            print(x, ' ', b)
            count += 1
# #
print(count)

5选3

chars = ['A', 'B', 'C', 'D', 'E']
count = 0
for index , a in enumerate(chars):
    sub = chars[index+ 1:]
    if len(sub) > 1:
        for j, b in enumerate(sub):
            cc = sub[j + 1:]
            if len(cc) > 0:
                for c in cc:
                    print(a, ' ', b, ' ', c)
                    count +=1
print(count)

使用内置库:

import itertools

chars = ['A', 'B', 'C', 'D', 'E']

# 5选3不重复
d = list(itertools.combinations(chars,3))
print(d) #结果
print(len(d)) # 数量

# 5选2
d = list(itertools.combinations(chars,2))
print(d) # 结果
print(len(d)) # 数量

说明: combinationsz():不重复
permutations():重复

声明:原创文章,版权所有,转载请注明出处,https://litets.com。