python从长度为n的列表中任取k个数

法一(内置函数法):

使用itertools.combinations函数从5个数中任选三个数。itertools.combinations函数返回给定可迭代对象中元素的所有可能组合,无重复且元素顺序不同则视为不同的组合。

import itertools  
# 定义你的数字列表  
numbers = [1, 2, 3, 4, 5]  
# 使用itertools.combinations选择三个数的所有组合  
combinations = list(itertools.combinations(numbers, 3))  
# 打印结果  
for combo in combinations:  print(combo)

在此基础上进行推广到从n个数中任选k个数:

import itertools
n,k=map(int,input().split())x=input().split(" ")
number=[]
for i in range(n):number.append(int(x[i]))cmb=list(itertools.combinations(number,k)) #返回一个迭代器,以元组为元素
for c in cmb:print(c)
'''
入:
4 3
3 7 12 19 31
出:
(3, 7, 12)
(3, 7, 19)
(3, 12, 19)
(7, 12, 19)
'''

法二(数据大用递归,数据小用暴力枚举):

还是以5选3为例,循环嵌套的层数取决于选的个数

# 定义包含5个数的列表  
numbers = [1, 2, 3, 4, 5]  # 初始化一个空列表来存储所有组合  
combinations = []  # 外层循环选择第一个数  
for i in range(len(numbers)):  # 内层第一个循环选择第二个数,注意要跳过已经选过的数  for j in range(i + 1, len(numbers)):  # 内层第二个循环选择第三个数,同样要跳过之前选过的数  for k in range(j + 1, len(numbers)):  # 将选出的三个数作为元组添加到组合列表中  combinations.append((numbers[i], numbers[j], numbers[k]))  # 打印所有组合  
for combo in combinations:  print(combo)

def combinations_with_loops(numbers, k):  # 初始化一个空列表来存储所有组合  combinations = []  # 获取列表长度  n = len(numbers)  # 使用递归函数来生成组合  def generate_combinations(start, current_combination):  # 如果当前组合的长度等于k,则将其添加到结果列表中  if len(current_combination) == k:  combinations.append(tuple(current_combination))  return  # 遍历从start开始到列表末尾的所有元素  for i in range(start, n):  # 将当前元素添加到组合中,并递归调用以继续添加下一个元素  generate_combinations(i + 1, current_combination + [numbers[i]])  # 从第一个元素开始生成组合  generate_combinations(0, [])  # 返回所有组合  return combinations  # 示例  
numbers = [1, 2, 3, 4, 5]  
k = 3  # 使用循环生成组合  
combinations = combinations_with_loops(numbers, k)  # 打印所有组合  
for combo in combinations:  print(combo)

法三(深度优先搜索DFS):

从N个数选取k个数的组合--不降原则(DFS)_n个数中选k个不同组合数-CSDN博客

P1036 [NOIP2002 普及组] 选数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/730654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(完美方案)解决mfc140u.dll文件丢失问题,快速且有效的修复

唉,又是丢失了mfc140u.dll,这该怎么办呢?如果你的电脑突然找不到或丢失mfc140u.dll文件,那就真是太糟糕了。别担心,我分享给你一些干货,告诉你如何快速解决mfc140u.dll丢失的问题。 一.mfc140u.dll属性功能…

百度地图城市点位数据下载并转换

概述 在浏览百度地图开放平台的时候,发现有个资源下载页面,里面有个城市中心点位和百度地图行政区划adcode映射表数据,这是一个经常使用到的数据,本文实现将这个数据转换为geojson,并借助QGIS转换为经纬度坐标或火星坐…

LCR 175. 计算二叉树的深度

一、题目描述 LCR 175. 计算二叉树的深度 二、思路 递归求左右子树的高度 三、解题思路 把大规模的问题拆分成小规模的问题1、要求根节点的二叉树深度 2、转换子问题:求左子树为根节点的二叉树深度 3、转换子问题:成求右子树为根节点的二叉树深度 4、最…

宏auto关键字(C++基础)

宏 宏可以实现对语句的同义替换&#xff0c;简单来说就是预处理阶段、编译前的替换&#xff08;包括符号&#xff0c;变量等&#xff09;。 #define LOG(x) std::cout << x << std::endl; LOG("hello") 可以正常使用。 下面通过上图中借用不同开发模…

Threejs着色器(GPU)编程——感温管网

管网,作为支撑现代城市运转的重要基础设施,是隐藏在地面之下的庞大工程网络。这些管网如同城市的血脉,负责输送各种必要的资源,如水源、热力、燃气等,同时排除废水和其他废弃物。然而,由于其位于地下,人们往往难以直接感知其存在和运行状态。为了保障这些地下管网的安全…

Leetcode - 周赛387

目录 一&#xff0c;3069. 将元素分配到两个数组中 I 二&#xff0c;3070. 元素和小于等于 k 的子矩阵的数目 三&#xff0c;3071. 在矩阵上写出字母 Y 所需的最少操作次数 四&#xff0c;3072. 将元素分配到两个数组中 II 一&#xff0c;3069. 将元素分配到两个数组中 I 本…

MySql进阶 锁 优化 | DAY 15

锁 计算机协调多个进程或线程并发访问某一种资源的机制 粒度 全局锁 锁住数据库中所有表表级锁 锁住整张表行级锁 锁住对应行数 全局锁 锁后 只能进行读取 全库的数据备份 从而获取一致性视图 全局锁 flush tables with read lock; 备份 mysqldump -u root -p 12345 dat…

Express学习(三)

Express中间件 中间件的概念 什么是中间件 中间件&#xff0c;特指业务流程的中间处理环节。Express中间件的调用流程 当一个请求到达Express的服务器之后&#xff0c;可以连续调用多个中间件&#xff0c;从而对这次请求进行预处理。类似于下图所示 Express中间件的格式 Expr…

内联函数|auto关键字|范围for的语法|指针空值

文章目录 一、内联函数1.1概念1.2特性 二、auto关键字2.2类型别名思考2.3auto简介2.4auto使用细则2.4 auto不能推导的场景 三、基于范围的for循环(C11)3.1 范围for的语法 四、指针空值nullptr(C11)4.1 C98中的指针空值 所属专栏:C初阶 一、内联函数 1.1概念 以inline修饰的函…

【LeetCode】升级打怪之路 Day 16:二叉树题型 —— 二叉树的构造

今日题目&#xff1a; 654. 最大二叉树105. 从前序与中序遍历序列构造二叉树106. 从中序与后序遍历序列构造二叉树889. 根据前序和后序遍历构造二叉树 目录 LC 654. 最大二叉树 【easy】 Problem&#xff1a;根据遍历序列来还原二叉树 【classic】 ⭐⭐⭐⭐⭐LC 105. 从前序与中…

小程序 获取 手机号 47001 data format error hint

0.场景 后端获取小程序用户手机号 ,api文档 https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-info/phone-number/getPhoneNumber.html 使用hutool工具作为http client 1. 正确的写法 正确示例 String tencentUrl StringUtils.format("https://api…

C++vector的使用方法

文章目录 一、vector的介绍1. 文档链接2. 简要介绍 二、vector的使用1.vector的定义&#xff08;1&#xff09;构造函数&#xff08;2&#xff09;拷贝构造函数&#xff08;2&#xff09;赋值重载 2. vector 增删查改&#xff08;1&#xff09;operator []&#xff08;2&#x…

[HackMyVM]靶场 Quick3

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (U…

树状数组+离散化求逆序对超详细讲解!

树状数组离散化求逆序对 用一个数组 w [ ] w[] w[]来记录遍历到当前数时&#xff0c;每个数出现的次数 由于只关心每个数前边有多少个数比他大&#xff0c;遍历到 i i i时&#xff0c;求大于 a [ i ] a[i] a[i]的数有多少个&#xff0c;就是对 [ a [ i ] , n ] [a[i], n] [a[i…

HTML—常用标签

常用标签&#xff1a; 标题标签&#xff1a;<h1></h1>......<h6></h6>段落标签&#xff1a;<p></p>换行标签&#xff1a;<br/>列表&#xff1a;无序列表<ul><li></li></ul> 有序列表<ol>&…

她们正在影响AI进程

今天是3月8日&#xff0c;祝广大女性同胞节日快乐&#xff01; 当下&#xff0c;人工智能正是全球科技圈最受关注的领域&#xff0c;甚至没有之一。 在人工智能领域诞生兴起的几十年内&#xff0c;女性科学家作为重要力量&#xff0c;一直在推动行业不断向前发展。 从基础算…

详谈数据结构数组名的含义

谈及背景 int a[3]; sizeof(arr) 12B &#xff0c;这个让我很不理解&#xff0c;后来通过一系列调查研究出了sizeof 一些性质: sizeof()是单目运算符&#xff0c;和‘’一样&#xff0c;不是库函数。sizeof()算结构体的大小 有对应的规则 算结构体大小与结构体中成员排列的顺序…

c++ primer中文版第五版作业第十八章

仓库地址 文章目录 18.118.218.318.418.518.618.718.818.918.1018.1118.1218.1318.1418.1518.16位置一using声明 位置二using声明 位置一using指示 位置二using指示 18.1718.1818.1918.2018.2118.2218.2318.2418.2518.2618.2618.2818.2918.30 18.1 此时r是一个range_error类型…

并查集(蓝桥杯 C++ 题目 代码 注解)

目录 介绍&#xff1a; 模板&#xff1a; 题目一&#xff08;合根植物&#xff09;&#xff1a; 代码&#xff1a; 题目二&#xff08;蓝桥幼儿园&#xff09;&#xff1a; 代码&#xff1a; 题目三&#xff08;小猪存钱罐&#xff09;&#xff1a; 代码&#xff1a; …

WebGL之使用着色器将颜色应用于 WebGL

在之前的展示中我们已经创建好了一个正方形&#xff0c;接下来我们要做的就是给它添加一抹色彩。添加颜色可以通过修改着色器来实现。 给顶点着色 在 WebGL 中&#xff0c;物体是由一系列顶点组成的&#xff0c;每一个顶点都有位置和颜色信息。在默认情况下&#xff0c;所有像…