python排列组合函数
之前写过《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排列组合函数相关推荐
- python 排列组合函数_Python概率统计(1):排列组合
〇.写在前面 最近面试了很多数据分析师的候选人,包括很多背景相当不错的同学,但是都不是特别满意. 为什么呢?其实说来很简单,我们这边对于经验较少的分析师,尤其是刚毕业或者校招的同学,会着重考察统计基础 ...
- python排列组合
1.Python的排列函数permutations() itertools.permutations(iterable,r=None) 功能:连续返回由iterable序列中的元素生成的长度为r的排列 ...
- python 排列组合之itertools
python 排列组合之itertools python 2.6 引入了itertools模块,使得排列组合的实现非常简单:
- Python排列组合的计算方法
Python排列组合的计算 1. math.comb() 2. scipy 计算排列组合的具体数值 3. itertools 获取排列组合的全部情况数 1. math.comb() 数学模块Pytho ...
- python 排列组合速度_Python实现的简单排列组合算法示例
本文实例讲述了Python实现的简单排列组合算法.分享给大家供大家参考,具体如下: 1.python语言简单.方便,其内部可以快速实现排列组合算法,下面做简单介绍 2.一个列表数据任意组合 主要是利用 ...
- python 排列组合算法_python算法-排列组合
原博文 2018-05-07 18:27 − 排列组合 一.递归 1.自己调用自己 2.找到一个退出的条件 二.全排列:针对给定的一组数据,给出包含所有数据的排列的组合 1:1 1,2:[[1,2], ...
- python 排列组合_python 编写排列组合
python在编写排列组合是会用到 itertools 模块 排列 import itertools mylist= list(itertools.permutations(['A','B','C', ...
- python 排列组合_Python计算生态jieba库和random库的综合运用之爬山篇
本篇文章会利用python语言中的第三方库jieba库和标准库random库来对文件中的相关元素进行操作. 实践中文片段:"今天是个好天气,大家一起去爬山."该句子分为上下两部分, ...
- python 排列组合_Python 实现排列组合中 nCr 算法
前言 本文提供一种使用 Python 计算 组合公式 nCr 比较高效的算法. 环境 Python 2.7. 公式中,n为下角标,m为上角标. C(n, m) = A(n, m) / m! = n! ...
最新文章
- Javascript之链式运动框架1
- thinkphp mysql desc table_Thinkphp 连接数据库、查询、添加
- 自定义拍照时 拍照界面_男子海边拍照时发现“金光闪闪”,走近查看后一夜暴富|戒指|沙土|包装膜...
- C语言中如何使用宏连接多个字符串(#和##的用法)
- LeetCode 1879. 两个数组最小的异或值之和(状态压缩DP)
- Storm精华问答 | Storm如何连接MySQL?
- 《推荐系统笔记(七)》因子分解机(FM)和它的推广(FFM、DeepFM)
- 基于ARM的智能灯光控制系统(11)状态更新
- Springboot 项目打包 Compilation failure: Compilation failure:
- 电子产品EMC不合格,如何整改?
- 网管笔记35:不得不看的黑客工具集
- MSP430(CCS工程下)添加printf实现打印功能
- PHP笔记——开发工具VS Code
- 微信小程序学习笔记——常见组件【navigator】导航组件
- [latex]{elsarticle}爱思唯尔模版的介绍与技术总结
- opencv 图像修复 inpaint()
- 答一位网友《SBO有哪样的几种开发方式》
- 直播预告|5月26日14:00 AAAI 专场三
- 求数学系或计算机系姓张的学生的信息,西安财经学院信息学院实验报告实验四郑莹莹1005230303.pdf...
- Linux前台任务转后台
热门文章
- 如何快速搭建基于PostgreSQL的空间数据库(SDE)
- mybatis 字段名自动转小写_mybatis 返回Map类型key改为小写的操作
- 数据库——创建和管理表
- 10.MYSQL基础—约束(constraint)
- 缔尚大师全球首推集成墙面火爆招商!!!
- Java线程的6种状态及切换(透彻讲解)
- 新手必读:笔记本电脑日常维护的经验技巧
- MySQL异常 #SQLException: sql injection violation, part alway true condition not allow
- 清华大学视频课件:ARM微控制器与嵌入式系统
- ubuntu安装sanba服务