itertools库包含:
- 无限迭代器
- 有限序列处理
- 排列组合
# 添加函数说明
def print_info(obj: "iter object") -> "print_info":
print(obj)
print(type(obj))
print(list(obj))
# help(print_info)
# print_info(obj:'iter object') -> 'print_info'
# range对象
r = range(10)
print_info(r)
"""
range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
"""
无限迭代器
import itertools
# 无限计数器,可以指定起始位置和步长
x = itertools.count(start=20, step=-1)
print(list(itertools.islice(x, 0, 10, 1)))
# [20, 19, 18, 17, 16, 15, 14, 13, 12, 11]
# 无限循环指定的列表和迭代器
x = itertools.cycle("ABC")
print(list(itertools.islice(x, 0, 10, 1)))
# ['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C', 'A']
# 简单的生成一个拥有指定数目元素的迭代器
x = itertools.repeat(0, 5)
print(list(x)) # [0, 0, 0, 0, 0]
有限序列处理
# 累加
x = itertools.accumulate(range(10))
print(x)#
print(list(x)) # [0, 1, 3, 6, 10, 15, 21, 28, 36, 45]
# 连接多个列表或者迭代器
x = itertools.chain(range(3), range(4), [6, 7, 8])
print(x) #
print(list(x))# [0, 1, 2, 0, 1, 2, 3, 6, 7, 8]
# 按照真值表筛选元素
x = itertools.compress(range(5), (True, False, False, True, True))
print(list(x)) # [0, 3, 4]
# 保留对应真值为False的元素
x = itertools.filterfalse(lambda e : e
关注
打赏