01
引言
大家好,我是AI算法之道!
Python是我最喜欢的编程语言之一,它向来以其简单性、多功能性和可读性而闻名。
大家好!今天我想与大家分享Python3中的Itertools 模块,其主要功能是用来做惰性序列的对象,只有当迭代到某个值的时候,才会进行计算得出这个值。
闲话少说,我们直接开始吧!
02
itertools.pairwise
itertools.pairwise 本质上就是为我们做这件事,我们不再需要自己实现这个逻辑。现在,我们的代码看起来更整洁、更易读了。
03
itertools.product
04
permutations & combinations
itertools.permutations 允许我们生成某个列表或可迭代项的所有排列组合:
我们还可以输入所需的排列长度,例如,生成长度为 2 的所有排列(而不是默认的 3)。
itertools.combinations 允许我们生成某个 list 或 iterable 的所有组合
就上下文而言,组合是一种排列顺序无关紧要的排列。两个排列(1,3,2)和(1,2,3)由于顺序不同而被认为是不同的。相反,(1、3、2)和(1、2、3)这两个组合被认为是完全相同的,因为在组合中顺序并不重要。
例如,从列表 [1, 2, 3, 4] 中生成所有长度为 3 的组合:
05
Combinations with replacement
在 itertools.combinations 中,每个元素只能使用一次。
在 itertools.combinations_with_replacement 中,每个元素都可以重复使用。
使用 itertools.combinations 从 [1, 2, 3] 中生成长度为 2 的所有组合:
06
itertools.zip_longest
fruit 有 3 个元素,而 price 有 5 个元素 itertools.zip_longest 仅在最长迭代停止时停止 在这种情况下,我们在迭代 5 次时停止 对于缺失的fruit,将直接生成None
07
itertools.cycle
itertools.cycle 允许我们永远重复某个元素序列。比方说,我们想永远按照这个顺序生成apple、orange和pear。我们可以使用 while 循环来实现。
08
itertools.groupby
itertools.groupby 为我们提供了迭代的功能,同时还能将相似的元素分组。
一个简单的例子--相同的元素被组合在一起:
注:相互独立的 1 被视为不同的组。
如果输入参数 key,我们就可以自定义 itertools.groupby 如何将元素分组。
例如,让我们按最后一位数字将数字分组--要做到这一点,我们需要在 key 参数中传递一个 lambda 函数。
注意到最后一位数相同的数字现在被组合在一起了。
09
itertools.accumulate 为我们提供了对可迭代表中的所有元素进行累加操作的功能。
如果我们没有为 itertools.accumulate 提供操作,它默认为加法。
给定列表 [1,5,3,2]:
我们的第一个元素是 1 我们的第二个元素是 (1 + 5) = 6 我们的第三个元素是 (1 + 5 + 3) = 9 最后一个元素是 (1 + 5 + 3 + 2) = 11
10
itertools.count
itertools.count 允许我们创建无限的范围,如下:
与内置 range 函数不同,itertools.count 可以创建一个无限的范围。
我们甚至可以用step等于负数来代替:
点击上方小卡片关注我
添加个人微信,进专属粉丝群!