python中跟排列组合相关的习题更改?

新手上路,请多包涵

num=[]
n=int(input("请输入总共的数"))
for a in range(1,n+1):

for b in range(1,n+1):
    for c in range(1,n+1):
        if a!=b and b!=c and a!=c:
            li=[a, b, c]
            num.append(li)

print(f"共有{len(num)}种组合,分别是:{num}")
这是我写的从多个数中选取三个的排列组合,现在我想把它改成选取m个,m为一个后期输入的不定的数怎么改?完全没思路!!

阅读 2k
1 个回答

这个问题和昨天某位同学的问题有一定相似,其实思路都正确,只是相对需要逻辑的地方多了一点点。
python案例求教?

同样,你的这道题调用itertool模块的函数也会很简单,行数少,而且清晰易懂。

from itertools import combinations, permutations

n = int(input("请输入总共的数:"))
nums = list(range(1, n+1))
m = int(input("请输入选取的数字个数:"))

# 组合
combinations_result = list(combinations(nums, m))
print(f"共有{len(combinations_result)}种组合,分别是:{combinations_result}")

# 排列
permutations_result = list(permutations(nums, m))
print(f"共有{len(permutations_result)}种排列,分别是:{permutations_result}")
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题