当前位置: 首页 > 知识库问答 >
问题:

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

戚良弼
2023-06-29

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为一个后期输入的不定的数怎么改?完全没思路!!

共有1个答案

牧宁
2023-06-29

这个问题和昨天某位同学的问题有一定相似,其实思路都正确,只是相对需要逻辑的地方多了一点点。
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}")
 类似资料:
  • 排列 下一个排列 LeetCode - 31. 下一个排列 题目描述 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。 以下是一些例子,输入位于左侧列,其相应输出位于右侧列。 1,2,3 → 1,3,2 3,2,1 → 1,2,3 1,1,5

  • 对于合并排序,我写了这样的代码:我已经测试了合并功能,工作正常。但是在mergeSort函数中,我不能处理数组。它返回与输入列表相同的列表。

  • 本文向大家介绍java数组排列组合问题汇总,包括了java数组排列组合问题汇总的使用技巧和注意事项,需要的朋友参考一下 面试或笔试中,多次遇到以下4个关于排列组合的手撕算法,这里做个笔记,方法日后查阅: 1. 无重复元素的数组,求全排列; 2. 有重复元素的数组,求全排列; 3. 无重复元素的数组,求组合【子集】; 4. 有重复元素的数组,求组合; 以上四类题,可以用统一的模板实现,如下所示: 以

  • 问题内容: 给定一个像这样的字典: 如何创建一个字典列表,该列表结合了第一个字典键的各种值?我想要的是: 问题答案: 我认为您想要笛卡尔积,而不是排列,在这种情况下可以提供帮助:

  • 问题内容: 我正在寻找Java的库,该库将生成集合的所有可能的顺序排列。我可以找到的唯一库是Google代码上的combinatoricslib。我很难相信这是唯一执行此操作的Java库,并且坦率地说,对此感到非常惊讶。 JDK,Apache Commons Math或另一个库中是否有提供相同功能的东西? 我很高兴使用combinatoricslib,除了我自己编写算法之外,我简直不敢相信这是唯一

  • 我做了一个代码,应该显示数组中元素排列的整个组合。 应该是什么: 123 213 231 132 312 321 但结果是这样的: 231 312 123 231 312 123 如何以应有的方式进行排列?