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

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

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

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

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

本文目录
  1. combinations函数定义

  2. combinations函数实例

    2.1 从固定元素种取出特定长度的组合元素

    2.2 生成组合入模特征

    2.3 生成六种水果的所有组合


一、combinations函数定义

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

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

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

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

具体调用语法如下:

import itertools
itertools.combinations(iterable, r)
iterable:是一个list参数,存放特定元素。

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


二、combinations函数实例

  实例1:从固定元素中取出特定长度的组合元素

从1、2、3、4、5五个元素中取两个元素进行组合,得到所有组合,并打印出来。

具体代码如下:

import itertools 
num = [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 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:生成组合入模特征

为了对不同入模特征模型效果进行衡量,可以写循环输入不同的组合特征,得到对应模型效果。

此时,需要生成不同的特征组合,可以应用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:生成六种水果的所有组合

为了让大家对这个函数有更清晰地了解,我们以常见的水果进行举列,生成六种水果的所有组合。

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中的函数,持续更新。。。

一文囊括Python中的有趣案例,持续更新。。。

一文囊括Python中的数据分析与绘图,持续更新。。。

一文囊括风控模型搭建(原理+Python实现),持续更新。。。



限时免费进群

19967879837

添加微信号、手机号

请使用浏览器的分享功能分享到微信等