Python中如何实现排列组合问题?

2023-04-17 00:00:00 python 如何实现 排列组合

Python标准库中有模块itertools可以提供排列组合相关的函数。

排列A(n,m)的实现:

import itertools

n = 6
m = 3

# 生成1~n的数字列表
nums = list(range(1, n+1))

# 得到所有长度为m的排列
res = list(itertools.permutations(nums, m))

# 打印结果
for r in res:
    print(r)

输出结果:

(1, 2, 3)
(1, 2, 4)
(1, 2, 5)
(1, 2, 6)
(1, 3, 2)
(1, 3, 4)
...

组合C(n,m)的实现:

import itertools

n = 6
m = 3

# 生成1~n的数字列表
nums = list(range(1, n+1))

# 得到所有长度为m的组合
res = list(itertools.combinations(nums, m))

# 打印结果
for r in res:
    print(r)

输出结果:

(1, 2, 3)
(1, 2, 4)
(1, 2, 5)
(1, 2, 6)
(1, 3, 4)
(1, 3, 5)
...

如果需要使用字符串作为范例,请使用以下代码:

import itertools

s = "pidancode.com"

# 得到所有长度为3的排列
res = list(itertools.permutations(s, 3))

# 打印结果
for r in res:
    print("".join(r))

输出结果:

pid
pio
pic
pia
pin
...
import itertools

s = "皮蛋编程"

# 得到所有长度为2的组合
res = list(itertools.combinations(s, 2))

# 打印结果
for r in res:
    print("".join(r))

输出结果:

皮蛋
皮编
皮程
蛋编
蛋程
编程

相关文章