从零开始学习python-itertools 7月10日

Python

                                                                                                                     ---小白121的记录笔记


Itertools :Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数。


count()

      生成无界限序列,count(start=0, step=1) ,示例从100开始,步长为2,循环10,打印对应值;必须手动break,count()会一直循环。

num = 1

for i  in  itertools.count(100,5):
    print(i)
    num += 1
    if num == 5:
        break


filterfalse ()

      Python filterfalse(contintion,data) 迭代过滤条件为false的数据。如果条件为空,返回data中为false的项;

a = [1,0,2,0,1,0]


n = [12,234,120,20]

print(list(itertools.filterfalse(lambda x: x>20,n)))


compress()

    返回我们需要使用的元素,根据b集合中元素真值,返回a集中对应的元素。

a = [1,0,0,1,4]
b = [1,0,2,0,1,0]
print(list(itertools.compress(a,b)))
'''
'''
a = itertools.starmap(max, [[1,2,3], [2131,213123123, 424]])

for i in a:
    print(i)


starmap()

      针对list中的每一项,调用函数功能。starmap(func,list[])

a = itertools.starmap(max, [[1,2,3], [2131,213123123, 424]])

for i in a:
    print(i)


repeat()

    repeat(object[, times]) 重复times次

repeat(10, 3) --> 10 10 10


dropwhile()

    dropwhile(func, seq );当函数f执行返回假时, 开始迭代序列
x = [1,1,1,3,5]
a = itertools.dropwhile(lambda x: x<5, x)

for i in a:
    print(i)


takewhile()

    takewhile(predicate, iterable);返回序列,当predicate为true是截止。

x = [1, 1, 1, 3, 5]
a = itertools.takewhile(lambda x: x < 5, x)

for i in a:
    print(i)


islice()

    islice(seq[, start], stop[, step]);返回序列seq的从start开始到stop结束的步长为step的元素的迭代器

for i in itertools.islice('asdasdasfas', 1,10 ,2):
    print(i)


product()

    product(iter1,iter2, ... iterN, [repeat=1]);创建一个迭代器,生成表示item1,item2等中的项目的笛卡尔积的元组,repeat是一个关键字参数,指定重复生成序列的次数

print(list(itertools.product(range(5),repeat=5)))


permutations()

    permutations(p[,r]);返回p中任意取r个元素做排列的元组的迭代器

print(list(itertools.permutations([1, 2,3,4, 3], 5)))


combinations()

    combinations(iterable,r);创建一个迭代器,返回iterable中所有长度为r的子序列,返回的子序列中的项按输入iterable中的顺序排序

print(list(itertools.combinations([1, 2, 3,4], 3)))


combinations_with_replacement()

    同上, 带重复 例子:

print(list(itertools.combinations_with_replacement([1, 2, 3,4], 3)))


应用示例

    求质数序列中1,3,5,7,9,11,13,15三个数之和为35的三个数;

a = itertools.combinations([1,3,5,7,9,11,13,15], 3)
num = 0
for i in a :
    num = sum(i)
    if num == 35 :
        print(i)

                                                                                                                参考自--neweastsun

单词:

archive    档案文件

item    项目

callable    可调用的

between    之间

instance    实例

take    拿

chain    链

letter    信

猜你喜欢

转载自blog.csdn.net/qq_42184699/article/details/80992707