当前位置: 首页 > news >正文

Python两种顺序生成组合

1、默认顺序说明

通过itertools.combinations可以生成组合,类似于深度搜索的顺序,对于C(6,3)按照如下顺序生成组合:

C(6,3)默认顺序组合:
(1, 2, 3)
(1, 2, 4)
(1, 2, 5)
(1, 2, 6)
(1, 3, 4)
(1, 3, 5)
(1, 3, 6)
(1, 4, 5)
(1, 4, 6)
(1, 5, 6)

(2, 3, 4)
(2, 3, 5)
(2, 3, 6)
(2, 4, 5)
(2, 4, 6)
(2, 5, 6)

(3, 4, 5)
(3, 4, 6)
(3, 5, 6)

(4, 5, 6)

2、增量生成组合的顺序说明

某些时候,需要优先使用排在前面的元素生成组合,穷尽之后,再加入新元素产生新的组合,对于C(6,3)顺序如下:

C(6,3)增量顺序组合:
(1, 2, 3)
(1, 2, 4)
(1, 3, 4)
(2, 3, 4)

(1, 2, 5)
(1, 3, 5)
(1, 4, 5)
(2, 3, 5)
(2, 4, 5)
(3, 4, 5)

(1, 2, 6)
(1, 3, 6)
(1, 4, 6)
(1, 5, 6)
(2, 3, 6)
(2, 4, 6)
(2, 5, 6)
(3, 4, 6)
(3, 5, 6)
(4, 5, 6)

3、两种顺序生成组合的参考Python代码

# coding=utf-8
from itertools import combinationsdef incremental_combinations(iterable, r):"""生成不重复的增量组合:每次只新增包含最新元素的组合"""pool = tuple(iterable)n = len(pool)if r > n or r < 1:return# 首先生成前r个元素的组合yield from combinations(pool[:r], r)# 逐步扩展范围,只生成包含新元素的组合for end in range(r + 1, n + 1):new_element = pool[end - 1]# 获取前end-1个元素中选r-1个的组合base_combos = combinations(pool[:end - 1], r - 1)# 将新元素与基础组合合并for base in base_combos:yield base + (new_element,)if __name__ == '__main__':data = [1,2,3,4,5,6]cmb_gen =  combinations(data,3)print('C(6,3)默认顺序组合:')for cmb in cmb_gen:print(cmb)cmb_gen =  incremental_combinations(data,3)print('C(6,3)增量顺序组合:')for cmb in cmb_gen:print(cmb)

4、组合的数量计算

import math
comb_size = math.comb(6,3)  # python 3.8及以上


文章转载自:

http://SXFnkH3r.bLqgc.cn
http://5GUKjiex.bLqgc.cn
http://cBLMbNQB.bLqgc.cn
http://C22Aod0u.bLqgc.cn
http://3Coj2Gos.bLqgc.cn
http://A1Depoq9.bLqgc.cn
http://4r2o8HI5.bLqgc.cn
http://K83Xv0bP.bLqgc.cn
http://fUaCzcg2.bLqgc.cn
http://ZJ8udZPD.bLqgc.cn
http://Kq0xF8Vs.bLqgc.cn
http://yuCnfPAG.bLqgc.cn
http://8gVyeDjb.bLqgc.cn
http://1Re8ofN5.bLqgc.cn
http://1lpEk7gv.bLqgc.cn
http://5dU1tLYd.bLqgc.cn
http://rEkK6Xs4.bLqgc.cn
http://ZNwrzqep.bLqgc.cn
http://TMh27Jhh.bLqgc.cn
http://bBUIFjxA.bLqgc.cn
http://TcucaFJQ.bLqgc.cn
http://XbtwaROu.bLqgc.cn
http://SFr6jV3V.bLqgc.cn
http://pFVJxUkC.bLqgc.cn
http://RuHfxTSC.bLqgc.cn
http://HOVGbwZ8.bLqgc.cn
http://9ki1P3SW.bLqgc.cn
http://1Cwiv7Zf.bLqgc.cn
http://zJWOyRvN.bLqgc.cn
http://a0rQOA9C.bLqgc.cn
http://www.dtcms.com/a/370198.html

相关文章:

  • 【Python自动化】 21 Pandas Excel 操作完整指南
  • Unity与硬件交互终极指南:从Arduino到自定义USB设备
  • Codeforces Round 1046 (Div. 2) vp补题
  • 【LeetCode热题100道笔记】二叉树的右视图
  • Day22_【机器学习—集成学习(1)—基本思想、分类】
  • 自动化运维,ansible综合测试练习题
  • 【面试题】领域模型持续预训练数据选取方法
  • OpenHarmony之USB Manager 架构深度解析
  • 新服务器初始化:Git全局配置与SSH密钥生成
  • 主流分布式数据库集群选型指南
  • 【Proteus仿真】定时器控制系列仿真——秒表计数/数码管显示时间
  • python advance -----object-oriented
  • 开源与定制化对比:哪种在线教育系统源码更适合教育培训APP开发?
  • 【51单片机-B030】【protues仿真】基于51单片机万年历系统
  • mysql 是否“100%”地解决幻读?
  • 分布式系统的设计哲学:架构模式全面介绍与选型策略
  • windows11 安装charm成功
  • IPD流程落地:IPMT的开发评审逻辑
  • 数字化赋能全球扩张:名创优品携手巨益科技的信息化转型深度实践
  • OpenCV - 图像的IO操作
  • Windows 11 手动下载安装配置 uv、配置国内源
  • Wisdom SSH 是一款搭载强大 AI 助手的工具,能显著简化服务器配置管理流程。
  • Linux基础知识(二)
  • Redis 在互联网高并发场景下的应用--个人总结
  • 算法题-链表03
  • 版本发布流程手册:Release分支规范与Bug分级标准全解析
  • 目标检测中的池化层
  • react native 出现 FATAL EXCEPTION: OkHttp Dispatcher
  • HttpClient、OkHttp 和 WebClient
  • js逆向Webpack模块加载机制解析:从数组到JSONP