首页 > 代码库 > Python标准库--itertools模块

Python标准库--itertools模块

itertools模块:处理可迭代对象

chain()和islice()、tee() 

chain:合并迭代器

islice:切割迭代器,start,end,step

tee:复制迭代器,新迭代器共享输入迭代器, 新迭代器之间不影响

from itertools import *

# for i in chain([1, 2, 3], [a, b, c]):
#     print(i)
#
# for i in islice(count(), 0, 100, 10):
#     print(i)

r = islice(count(), 5)
i1, i2 = tee(r)
# print(list(i1))
# print(list(i2))

for i in r:
    print(i)
    if i > 0:
        break

for i in i1:
    print(i)
    if i > 1:
        break
        
print(list(i1))
print(list(i2))

startmap()

values = [(0, 5), (1, 6), (2, 7)]

for i in starmap(lambda x, y: (x, y, x * y), values):
    print(i)

# (0, 5, 0)
# (1, 6, 6)
# (2, 7, 14)

count()、cycle()、repeat()

for i in count():
    print(i)

for i in cycle([a, b, c]):
    print(i)

for i in repeat(2,5):
    print(i)

takewhile()、dropwhile()、filterfase()

takewhile:一旦条件为false,停止处理

dropwhile:条件为false,开始处理

filterfase:只处理条件为false

def should_drop(x):
    return x < 1

for i in dropwhile(should_drop, [-1, 0, 1, 2, -2]):
    print(i)

def should_take(x):
    return x < 2

for i in takewhile(should_take, [-1, 0, 1, 2, -2]):
    print(i)

def check_item(x):
    return x < 1

for i in filterfalse(check_item, [-1, 0, 1, 2, -2]):
    print(i)

groupby()

 

Python标准库--itertools模块