之前写过《python组合求和》,使用python排列组合itertools模块combinations函数,本文对该模块的排列组合功能进行整理
官方文档:《itertools — 为高效循环而创建迭代器的函数 — Python 3.7.12 文档》

目录

  • 排列
    • 排列写入excel
  • 组合
    • 所有组合

排列

排列:从n个不同元素中,任取m个(m≤n)不同的元素按照一定的顺序排成一列
排列个数公式:P(n,m) = n!/(n-m)!,当n=m即全排列时为n!个

from itertools import permutations
def permut(list_n, m=1):"""对列表中的n个元素,任取m个排列,排列有序,当元素有重复时,排列也有重复:param list list_n: 列表,元素个数n:param int m: 排列内元素个数,m>n返回空列表"""result = list(permutations(list_n, m))return result

排列写入excel

import time
import pandas as pd
from itertools import permutations
def permut_xlsx(list_n, m=1):"""排列结果写入Excel文件,使用pandas:param list list_n: 列表,元素个数n:param int m: 排列内元素个数,m>n返回空列表"""start_time = time.time()filename = r'E:\测试\python排列.xlsx'writer = pd.ExcelWriter(filename)sheet_name = 'Sheet1'result = list(permutations(list_n, m))df = pd.DataFrame(result)  # 转为二维数据结构,便于写入Excel# 写入文件,文件不存在则创建(但sheet名称不行);行、列头不写入df.to_excel(writer,sheet_name,header=False,index=False)writer.save()print('所有排列写入完成,用时:%.4f秒' % (time.time() - start_time))

组合

组合:从n个不同元素中,任取m个(m≤n)元素并成一组
组合个数公式:C(n,m) = P(n,m)/m! = n!/(m!(n-m)!)

from itertools import combinations
def combin(list_n, m=1):"""对列表中的n个元素,任取m个组合,组合无序,当元素有重复时,组合也有重复:param list list_n: 列表,元素个数n:param int m: 组合内元素个数,m>n返回空列表"""result = list(combinations(list_n, m))  # 简洁高效写法return result

所有组合

import time
from itertools import combinations
def combin_all(list_n, m=0):"""对列表中的n个元素,任取m个组合,组合无序,当元素有重复时,组合也有重复:param list list_n: 列表,元素个数n:param int m: 组合内元素个数,m>n返回空列表返回结果:列表内嵌套元组[(),()]注意:m=0时返回所有的组合,但数据量大时容易爆内存(25个以内)"""start_time = time.time()result = []if m < 0 or not isinstance(m, int):print('参数异常,m应为自然数')return []elif m > len(list_n):  # 当 m>n 时返回空列表print('参数异常,m>n')return []elif m == 0:  # 与之前保持一致,m=0时返回所有的组合,组合个数(2^n - 1)for i in range(1, len(list_n)+1):result += list(combinations(list_n, i))  # 迭代器写入列表print('所有组合都已生成,用时:%.4f秒' % (time.time() - start_time))return resultelse:  # 一般情况,只返回限定m的组合result += list(combinations(list_n, m))  # 迭代器写入列表print('所有组合都已生成,用时:%.4f秒' % (time.time() - start_time))return result

python排列组合函数相关推荐

  1. python 排列组合函数_Python概率统计(1):排列组合

    〇.写在前面 最近面试了很多数据分析师的候选人,包括很多背景相当不错的同学,但是都不是特别满意. 为什么呢?其实说来很简单,我们这边对于经验较少的分析师,尤其是刚毕业或者校招的同学,会着重考察统计基础 ...

  2. python排列组合

    1.Python的排列函数permutations() itertools.permutations(iterable,r=None) 功能:连续返回由iterable序列中的元素生成的长度为r的排列 ...

  3. python 排列组合之itertools

    python 排列组合之itertools python 2.6 引入了itertools模块,使得排列组合的实现非常简单:

  4. Python排列组合的计算方法

    Python排列组合的计算 1. math.comb() 2. scipy 计算排列组合的具体数值 3. itertools 获取排列组合的全部情况数 1. math.comb() 数学模块Pytho ...

  5. python 排列组合速度_Python实现的简单排列组合算法示例

    本文实例讲述了Python实现的简单排列组合算法.分享给大家供大家参考,具体如下: 1.python语言简单.方便,其内部可以快速实现排列组合算法,下面做简单介绍 2.一个列表数据任意组合 主要是利用 ...

  6. python 排列组合算法_python算法-排列组合

    原博文 2018-05-07 18:27 − 排列组合 一.递归 1.自己调用自己 2.找到一个退出的条件 二.全排列:针对给定的一组数据,给出包含所有数据的排列的组合 1:1 1,2:[[1,2], ...

  7. python 排列组合_python 编写排列组合

    python在编写排列组合是会用到 itertools 模块 排列 import itertools mylist= list(itertools.permutations(['A','B','C', ...

  8. python 排列组合_Python计算生态jieba库和random库的综合运用之爬山篇

    本篇文章会利用python语言中的第三方库jieba库和标准库random库来对文件中的相关元素进行操作. 实践中文片段:"今天是个好天气,大家一起去爬山."该句子分为上下两部分, ...

  9. python 排列组合_Python 实现排列组合中 nCr 算法

    前言 本文提供一种使用 Python 计算 组合公式 nCr 比较高效的算法. 环境 Python 2.7. 公式中,n为下角标,m为上角标. C(n, m) = A(n, m) / m! = n! ...

最新文章

  1. Javascript之链式运动框架1
  2. thinkphp mysql desc table_Thinkphp 连接数据库、查询、添加
  3. 自定义拍照时 拍照界面_男子海边拍照时发现“金光闪闪”,走近查看后一夜暴富|戒指|沙土|包装膜...
  4. C语言中如何使用宏连接多个字符串(#和##的用法)
  5. LeetCode 1879. 两个数组最小的异或值之和(状态压缩DP)
  6. Storm精华问答 | Storm如何连接MySQL?
  7. 《推荐系统笔记(七)》因子分解机(FM)和它的推广(FFM、DeepFM)
  8. 基于ARM的智能灯光控制系统(11)状态更新
  9. Springboot 项目打包 Compilation failure: Compilation failure:
  10. 电子产品EMC不合格,如何整改?
  11. 网管笔记35:不得不看的黑客工具集
  12. MSP430(CCS工程下)添加printf实现打印功能
  13. PHP笔记——开发工具VS Code
  14. 微信小程序学习笔记——常见组件【navigator】导航组件
  15. [latex]{elsarticle}爱思唯尔模版的介绍与技术总结
  16. opencv 图像修复 inpaint()
  17. 答一位网友《SBO有哪样的几种开发方式》
  18. 直播预告|5月26日14:00 AAAI 专场三
  19. 求数学系或计算机系姓张的学生的信息,西安财经学院信息学院实验报告实验四郑莹莹1005230303.pdf...
  20. Linux前台任务转后台

热门文章

  1. 如何快速搭建基于PostgreSQL的空间数据库(SDE)
  2. mybatis 字段名自动转小写_mybatis 返回Map类型key改为小写的操作
  3. 数据库——创建和管理表
  4. 10.MYSQL基础—约束(constraint)
  5. 缔尚大师全球首推集成墙面火爆招商!!!
  6. Java线程的6种状态及切换(透彻讲解)
  7. 新手必读:笔记本电脑日常维护的经验技巧
  8. MySQL异常 #SQLException: sql injection violation, part alway true condition not allow
  9. 清华大学视频课件:ARM微控制器与嵌入式系统
  10. ubuntu安装sanba服务