python的itertools(迭代器)

itertools

是一个高效的迭代器

所含包

count(初值=0, 步长=1)

  1. 意义:count 迭代器会返回从传入的起始参数开始的均匀间隔的数值。
  2. 用法count(初值=0, 步长=1);
  3. 实例
>>>from itertools import count
>>> for i in count(10): #从10开始无限循环
>>> if i > 20: 
>>>break
>>> else:
>>> print(i)

10
11
12
13
14
15
16
17
18
19
20

islice(count(10), 5)

  1. 意义:从 10 开始,输出 5 个元素后结束。islice 的第二个参数控制何时停止迭代。但其含义并不是”达到数字 5 时停止“,而是”当迭代了 5 次之后停止“。
  2. 用法islice(count(起始数值),迭代次数)
  3. 代码:
>>> from itertools import islice
>>> for i in islice(count(10), 5):
>>>print(i)

10
11
12
13
14

cycle

  1. 意义:循环字符
  2. 用法:cycle(“要循环的字符串:”)
  3. 代码:这里我们创建了一个 for 循环,使其在三个字母 XYZ 间无限循环。当然,我们并不真地想要永远循环下去,所以我们添加了一个简单的计数器来跳出循环。
>>> from itertools import cycle
>>> count = 0
>>> for item in cycle('XYZ'):
>>> if count > 7:
>>> break
>>> print(item)
>>>count += 1

X
Y
Z
X
Y
Z
X
Y

可终止迭代器

accumulate(可迭代对象[, 函数])

  1. 意义:accumulate可将迭代对象返回累计求和结果,或者传入两个参数的话,由传入的函数累积计算的结果。默认为相加
  2. 用法:accumulate(可迭代对象[, 函数])
  3. 代码1:我们 导入了 accumulate,然后传入 10 个数字,0-9。迭代器将传入数字依次累加,所以第一个是 0 ,第二个是 0+1, 第三个是 1+2,如此下去。
>>> from itertools import accumulate
>>> list(accumulate(range(10)))

[0, 1, 3, 6, 10, 15, 21, 28, 36, 45]

代码2:这里我们传入了数字 1-4 到 accumulate 迭代器中。我们还传入了一个函数:operator.mul,这个函数将接收的参数相乘。所以每一次迭代,迭代器将以乘法代替除法(1×1=1, 1×2=2, 2×3=6, 以此类推)。

>>> import operator
>>> list(accumulate(range(1, 5), operator.mul))

[1, 2, 6, 24]

你可能感兴趣的:(python蓝桥杯,Python)