前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python常用函数】一文让你彻底掌握Python中的combinations函数

【Python常用函数】一文让你彻底掌握Python中的combinations函数

作者头像
阿黎逸阳
发布2023-09-09 17:53:58
7590
发布2023-09-09 17:53:58
举报
文章被收录于专栏:阿黎逸阳的代码

任何事情都是由量变到质变的过程,学习Python也不例外。

只有把一个语言中的常用函数了如指掌了,才能在处理问题的过程中得心应手,快速地找到最优方案。

本文和你一起来探索Python中的combinations函数,让你以最短的时间明白这个函数的原理。

也可以利用碎片化的时间巩固这个函数,让你在处理工作过程中更高效。

一、combinations函数定义

高中的时候我们学过排列组合。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。

组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。

combinations函数的作用是,根据特定的元素和长度,生成一系列的组合元素。

combinations是itertools库中的函数,而itertools是内置库,调用不需要安装,直接import即可。

具体调用语法如下:

代码语言:javascript
复制
import itertools

itertools.combinations(iterable, r)

iterable:是一个list参数,存放特定元素。

r:是数字,指从特定元素中取出r个元素生成组合元素。

代码语言:javascript
复制



二、combinations函数实例

1 实例1:从固定元素中取出特定长度的组合元素 从1、2、3、4、5五个元素中取两个元素进行组合,得到所有组合,并打印出来。 import itertools num = [1, 1, 2, 3, 4, 5] for element in itertools.combinations(num, 2): print(element) 得到结果: (1, 1) (1, 2) (1, 3) (1, 4) (1, 5) (1, 2) (1, 3) (1, 4) (1, 5) (2, 3) (2, 4) (2, 5) (3, 4) (3, 5) (4, 5) 可以发现生成的组合元素是位置的组合,即第一个位置的元素和后面所有的元素组合。 第二个位置的元素和位置大于2的所有元素组合,依次类推。 2 实例2:生成组合入模特征 为了对不同入模特征模型效果进行衡量,可以写循环输入不同的组合特征,得到对应模型效果。 此时,需要生成不同的特征组合,可以应用combination函数。具体如下代码: # 遍历所有特征 features = ['feature_1', 'feature_2', 'feature_3', 'feature_4'] # 选择入模特征 for i in range(len(features)): comb = itertools.combinations(features, i+1) for i in comb: print(i) 得到结果: ('feature_1',) ('feature_2',) ('feature_3',) ('feature_4',) ('feature_1', 'feature_2') ('feature_1', 'feature_3') ('feature_1', 'feature_4') ('feature_2', 'feature_3') ('feature_2', 'feature_4') ('feature_3', 'feature_4') ('feature_1', 'feature_2', 'feature_3') ('feature_1', 'feature_2', 'feature_4') ('feature_1', 'feature_3', 'feature_4') ('feature_2', 'feature_3', 'feature_4') ('feature_1', 'feature_2', 'feature_3', 'feature_4') 也可以调整range函数,让入模变量至少有2个,感兴趣的可以自行尝试。 3 实例3:生成六种水果的所有组合 为了让大家对这个函数有更清晰地了解,我们以常见的水果进行举列,生成六种水果的所有组合。 import itertools # 数据集中的特征 eat = ['西瓜', '哈密瓜', '榴莲', '桃子', '草莓', '荔枝'] for i in range(1, len(features)): comb = itertools.combinations(eat, i+1) for i in comb: print(i) 得到结果: ('西瓜', '哈密瓜') ('西瓜', '榴莲') ('西瓜', '桃子') ('西瓜', '草莓') ('西瓜', '荔枝') ('哈密瓜', '榴莲') ('哈密瓜', '桃子') ('哈密瓜', '草莓') ('哈密瓜', '荔枝') ('榴莲', '桃子') ('榴莲', '草莓') ('榴莲', '荔枝') ('桃子', '草莓') ('桃子', '荔枝') ('草莓', '荔枝') ('西瓜', '哈密瓜', '榴莲') ('西瓜', '哈密瓜', '桃子') ('西瓜', '哈密瓜', '草莓') ('西瓜', '哈密瓜', '荔枝') ('西瓜', '榴莲', '桃子') ('西瓜', '榴莲', '草莓') ('西瓜', '榴莲', '荔枝') ('西瓜', '桃子', '草莓') ('西瓜', '桃子', '荔枝') ('西瓜', '草莓', '荔枝') ('哈密瓜', '榴莲', '桃子') ('哈密瓜', '榴莲', '草莓') ('哈密瓜', '榴莲', '荔枝') ('哈密瓜', '桃子', '草莓') ('哈密瓜', '桃子', '荔枝') ('哈密瓜', '草莓', '荔枝') ('榴莲', '桃子', '草莓') ('榴莲', '桃子', '荔枝') ('榴莲', '草莓', '荔枝') ('桃子', '草莓', '荔枝') ('西瓜', '哈密瓜', '榴莲', '桃子') ('西瓜', '哈密瓜', '榴莲', '草莓') ('西瓜', '哈密瓜', '榴莲', '荔枝') ('西瓜', '哈密瓜', '桃子', '草莓') ('西瓜', '哈密瓜', '桃子', '荔枝') ('西瓜', '哈密瓜', '草莓', '荔枝') ('西瓜', '榴莲', '桃子', '草莓') ('西瓜', '榴莲', '桃子', '荔枝') ('西瓜', '榴莲', '草莓', '荔枝') ('西瓜', '桃子', '草莓', '荔枝') ('哈密瓜', '榴莲', '桃子', '草莓') ('哈密瓜', '榴莲', '桃子', '荔枝') ('哈密瓜', '榴莲', '草莓', '荔枝') ('哈密瓜', '桃子', '草莓', '荔枝') ('榴莲', '桃子', '草莓', '荔枝') 至此,Python中的combinations函数已讲解完毕,如想了解更多Python中的函数,可以翻看公众号中“学习Python”模块相关文章。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿黎逸阳的代码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档