任何事情都是由量变到质变的过程,学习Python也不例外。
只有把一个语言中的常用函数了如指掌了,才能在处理问题的过程中得心应手,快速地找到最优方案。
本文和你一起来探索Python中的combinations函数,让你以最短的时间明白这个函数的原理。
也可以利用碎片化的时间巩固这个函数,让你在处理工作过程中更高效。
combinations函数定义
combinations函数实例
2.1 从固定元素种取出特定长度的组合元素
2.2 生成组合入模特征
2.3 生成六种水果的所有组合

高中的时候我们学过排列组合。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。
组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。
combinations函数的作用是,根据特定的元素和长度,生成一系列的组合元素。
combinations是itertools库中的函数,而itertools是内置库,调用不需要安装,直接import即可。
具体调用语法如下:
import itertoolsitertools.combinations(iterable, r)
r:是数字,指从特定元素中取出r个元素生成组合元素。
二、combinations函数实例 1 实例1:从固定元素中取出特定长度的组合元素
从1、2、3、4、5五个元素中取两个元素进行组合,得到所有组合,并打印出来。
具体代码如下:
import itertoolsnum = [1, 2, 3, 4, 5]for element in itertools.combinations(num, 2):print(element)得到结果:
(1, 2)(1, 3)(1, 4)(1, 5)(2, 3)(2, 4)(2, 5)(3, 4)(3, 5)(4, 5)如果元素中有重复元素,会发生什么?
我们在刚刚的特定元素中多加一个1,看看结果会怎么样,具体代码如下:
import itertoolsnum = [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”模块相关文章。
【限时免费进群】群内提供学习Python、玩转Python、风控建模、人工智能、数据分析相关招聘内推信息、优秀文章、学习视频,也可交流学习工作中遇到的相关问题。需要的朋友添加微信号19967879837,加时备注想进的群,比如风控建模。
一文囊括风控模型搭建(原理+Python实现),持续更新。。。


限时免费进群
19967879837
添加微信号、手机号
