# Python内建的模块itertools提供了非常有用的用于操作迭代对象的函数
# count()会创建一个无限的迭代器
import itertools
# natuals = itertools.count(1)
# for n in natuals:
# print(n)
# cycle()会把传入的字符串一直重复的迭代循环下去
# cs = itertools.cycle('ABC')
# for c in cs:
# print(c)
# repeat()负责把一个元素无限重复下去.不过如果提供第二个参数就可以限定重复的次数.
ns = itertools.repeat('ABC', 3)
for n in ns:
print(n)
# 我们通常用takewhile()等函数根据条件判断来截取一个有限的序列
natuals = itertools.count(1)
ns = itertools.takewhile(lambda x: x <= 10, natuals)
print(list(ns))
# itertools提供了更好用的操作迭代对象的函数
# chain()函数, 将迭代对象串联起来么形成更大的迭代器
for c in itertools.chain('ABC', 'XYZ'):
print(c)
# groupby()把迭代器中相邻的重复元素跳出来放在一起.
# for key, group in itertools.groupby('AAABBBCCAAA'):
# print(key, list(group))
# 实际上挑选规则是通过函数完成的, 只要作用于函数的两个元素返回的值
# 相等, 这两个元素就被认为是在一组的.而函数返回值作为组的key.
# 如果我们要忽略大小写分组.可以让'A', 'a'返回相同的key
for key, group in itertools.groupby('AaaBBbcCAAa', lambda c:c.upper()):
print(key, list(group))
# itertools模块提供的全部是处理迭代功能的函数.他们的返回值不是list
# 而是Iterable.只有用for循环迭代的是否才真正的计算.
2024 - 快车库 - 我的知识库 重庆启连科技有限公司 渝ICP备16002641号-10
企客连连 表单助手 企服开发 榜单123