【基础】Python3小程序_之排列组合
题目——
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?具体有哪些数字
程序——
方法一:for循环+集合去重复项
num = [1, 2, 3, 4]
res = []
for iinnum:
for j innum:
for k innum:
if len(set((i, j, k))) == 3: #使用set()集合去重复项
res.append(i *100 + j * 10+ k)
print(f'组成{len(res)}个互不相同且无重复数字的三位数')
print('组成的三位数为:')
for iinres:
print(i)
方法二:内置函数itertools
fromitertools importpermutations
numstr = '1234'
res = []
foritem inpermutations(numstr, 3):
temp =''
for i initem:
temp += i
res.append(int(temp))
print(f'组成{len(res)}个互不相同且无重复数字的三位数')
print('组成的三位数为:')
for ninres:
print(n)
延伸:itertools模块
排列组合迭代器:
itertools.product <p,q…[repeat=l]>笛卡尔积,相当于嵌套的for
itertools.permutation <p[,r]>长度为r元组,所有可能得排列,无重复元素
itertools.combination <p,r> 长度r元组,有序,无重复元素
itertools.combinaton_with_replacement <p,r> 长度人员组,有序,元素可重复
举例
模块其他函数:https://docs.python.org/zh-cn/3.7/library/itertools.html
https://blog.csdn.net/weixin_41084236/article/details/81626968