首页 > 编程语言 > 详细

python 内置模块之 itertools

时间:2020-01-10 20:14:25      阅读:71      评论:0      收藏:0      [点我收藏+]

Python的内建模块itertools

提供了非常有用的用于操作迭代对象的函数

count

import itertools

# 创建一个无限的迭代器, 起始值为0, 步长为1
count_iter = itertools.count(start=0, step=1)
for n in count_iter:
if n > 10:
break
print(n, end= )

# 输出结果输出结果:0 1 2 3 4 5 6 7 8 9 10

 

islice

import itertools

# 从10开始,步长为1, 迭代5次
for n in itertools.islice(itertools.count(10), 5):
if n > 100:
break
print(n, end= )
# 输出结果:10 11 12 13 14 

 

cycle

import itertools

# 无限重复传入的序列中的元素
i = 0
for n in itertools.cycle(abc):
if i >= 10:
break
print(n, end= )
i += 1
# 输出结果:a b c a b c a b c a

 

repeat

import itertools

# 重复传入的元素
for n in itertools.repeat(ABC, times=5):
print(n, end= )
# 输出结果:ABC ABC ABC ABC ABC 

 

chain

import itertools

# 把一组迭代对象串联起来,形成一个更大的迭代器
chain_list = [c for c in itertools.chain(ABC, XYZ)]
print(chain_list)
# 输出结果:[‘A‘, ‘B‘, ‘C‘, ‘X‘, ‘Y‘, ‘Z‘]

 

groupby

把迭代器中相邻的重复元素挑出来放在一起

import itertools

for key, group in itertools.groupby(AaABbbCCaAAcc, key=lambda x: x.upper()):
print(key, list(group))
# 输出结果:
# A [‘A‘, ‘a‘, ‘A‘]
# B [‘B‘, ‘b‘, ‘b‘]
# C [‘C‘, ‘C‘]
# A [‘a‘, ‘A‘, ‘A‘]
# C [‘c‘, ‘c‘]

product

笛卡尔积,相当于嵌套的for循环

import string
import itertools

# ABCDEFGHIJKLMNOPQRSTUVWXYZ
s = string.ascii_uppercase 
# result = list(s)
result = [‘‘.join(t) for t in itertools.product(s, repeat=2) if "AA" <= ‘‘.join(t) <= "AK"]
print(result)
# 输出结果:
# [‘AA‘, ‘AB‘, ‘AC‘, ‘AD‘, ‘AE‘, ‘AF‘, ‘AG‘, ‘AH‘, ‘AI‘, ‘AJ‘, ‘AK‘]

python 内置模块之 itertools

原文:https://www.cnblogs.com/itelephant/p/12177256.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!