资讯专栏INFORMATION COLUMN

Python 进阶之路 (十) 再立Flag, 社区最全的itertools深度解析(中)

LMou / 870人阅读

前情回顾

大家好,我又回来了。今天我会继续和大家分享itertools这个神奇的自带库,首先,让我们回顾一下上一期结尾的时候我们讲到的3个方法:

combinations()

combinations_with_replacement()

permutations()

让我们对这3个在排列组合中经常会使用到的函数做个总结

combinations()
基础概念

模板:combinations(iterable, n)

参数:iterable为可迭代的对象(list,tuple...), n为想要的组合包含的元素数

返回值: 返回在iterable里n个元素组成的tuple的全部组合(不考虑顺序,元素自身不可重复)

应用实例
import itertools as it
lst = [1,2,3]
result = list(it.combinations(lst,2))
print(result)

Out: [(1, 2), (1, 3), (2, 3)]

这里我们从lst这个list里面选取所有由两个元素组成的组合,得到结果如图所示,这里没有考虑顺序,因此我们不会看到(1,2)和(2,1)被算作两种组合,元素自身不可重复,所以没有(1,1),(2,2),(3,3)的组合出现

combinations_with_replacement()
基础概念

模板:combinations_with_replacement(iterable, n)

参数:iterable为可迭代的对象(list,tuple...), n为想要的组合包含的元素数

返回值: 返回在iterable里n个元素组成的tuple的全部组合(不考虑顺序,元素自身可重复)

应用实例
import itertools as it
lst = [1,2,3]
result = list(it.combinations_with_replacement(lst,2))
print(result)

Out: [(1, 1), (1, 2), (1, 3), (2, 2), (2, 3), (3, 3)]

和刚才的区别是多了(1,1),(2,2),(3,3)的组合,也就是说允许每个元素自己和自己组合

permutations()
基础概念

模板:permutations(iterable, n=None)

参数:iterable为可迭代的对象(list,tuple...), n为想要的组合包含的元素数

返回值: 返回在iterable里n个元素组成的tuple的全部组合(考虑顺序,元素自身不可重复)

应用实例
import itertools as it
lst = [1,2,3]
result = list(it.permutations(lst,2))
print(result)

Out: [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]


我们用permutations得到的结果是自身元素不能重复的情况下,一个iterable里面由n个元素构成的全部组合,考虑顺序

不同点汇总

我们这里可以简单汇总一下三个函数的不同点,汇总一张精华满满的表格送个大家,希望大家如果日后有一天需要用到的话可以回来我这里看看,顺便给勤劳的博主点个赞也是好的

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43241.html

相关文章

  • Python 进阶之路 (一) 再立Flag, 社区最全itertools深度解析(下)

    摘要:将每一行作为返回,其中是每行中的列名。对于每一行,都会生成一个对象,其中包含和列中的值。它返回一个迭代器,是迭代结果都为的情况。深度解析至此全剧终。 简单实战 大家好,我又来了,在经过之前两篇文章的介绍后相信大家对itertools的一些常见的好用的方法有了一个大致的了解,我自己在学完之后仿照别人的例子进行了真实场景下的模拟练习,今天和大家一起分享,有很多部分还可以优化,希望有更好主意...

    tomorrowwu 评论0 收藏0
  • Python 进阶之路 (九) 再立Flag, 社区最全itertools深度解析(上)

    摘要:例如,以下对两个的相应元素求和这个例子很好的解释了如何构建中所谓的迭代器代数的函数的含义。为简单起见,假设输入的长度可被整除。接受两个参数一个可迭代的正整数最终会在中个元素的所有组合的元组上产生一个迭代器。 前言 大家好,今天想和大家分享一下我的itertools学习体验及心得,itertools是一个Python的自带库,内含多种非常实用的方法,我简单学习了一下,发现可以大大提升工作...

    tuantuan 评论0 收藏0
  • Python 进阶之路 (四) 先立Flag, 社区最全Set用法集锦

    摘要:与上面的操作类似,可以使用多种运算符和方法来更改集合的内容。通过修改集合元素方法运算符用法通过修改集合和作用是向集合中添加中所有不存在的元素。 Set是什么 大家好,恰逢初五迎财神,先预祝大家新年财源滚滚!!在上一期详解tuple元组的用法后,今天我们来看Python里面最后一种常见的数据类型:集合(Set) 与dict类似,set也是一组key的集合,但不存储value。由于key不...

    nodejh 评论0 收藏0
  • Python 进阶之路 (八) 最用心推导式详解 (附简单实战及源码)

    摘要:什么是推导式大家好,今天为大家带来问我最喜欢的推导式使用指南,让我们先来看看定义推导式是的一种独有特性,推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 什么是推导式 大家好,今天为大家带来问我最喜欢的Python推导式使用指南,让我们先来看看定义~ 推导式(comprehensions)是Python的一种独有特性,推导式是可以从一个数据序列构建另一个新的数据序列的结构体。...

    hufeng 评论0 收藏0

发表评论

0条评论

LMou

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<