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))
输出结果:
皮蛋 皮编 皮程 蛋编 蛋程 编程
相关文章