【基础】Python3小程序_之排列组合

2021-04-05  本文已影响0人  Alyna_C

题目——

有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

上一篇 下一篇

猜你喜欢

热点阅读