python 函数式编程 库_itertools -- 函数式编程模块 -- Python 标准库

Overview

本模块实现一系列 iterator ,这些迭代器受到 APL,Haskell 和 SML 的启发。为了适用于 Python,它们都被重新写过。

本模块标准化了一个快速、高效利用内存的核心工具集,这些工具本身或组合都很有用。它们一起形成了“迭代器代数”,这使得在纯 Python 中有可能创建简洁又高效的专用工具。

例如,SML 有一个制表工具: tabulate(f),它可产生一个序列 f(0), f(1), ...。在 Python 中可以组合 map() 和 count() 实现: map(f, count())。

这些内置工具同时也能很好地与 operator 模块中的高效函数配合使用。例如,我们可以将两个向量的点积映射到乘法运算符: sum(map(operator.mul, vector1, vector2)) 。

无穷迭代器迭代器实参结果示例start, [step]start, start+step, start+2*step, ...count(10)--> 10 11 12 13 14 ...

pp0, p1, ... plast, p0, p1, ...cycle('ABCD')--> A B C D A B C D ...

elem [,n]elem, elem, elem, ... 重复无限次或n次repeat(10,3) --> 10 10 10

根据最短输入序列长度停止的迭代器迭代器实参结果示例p [,func]p0, p0+p1, p0+p1+p2, ...accumulate([1,2,3,4,5])--> 1 3 6 10 15

p, q, ...p0, p1, ... plast, q0, q1, ...chain('ABC','DEF') --> A B C D E F

iterable -- 可迭代对象p0, p1, ... plast, q0, q1, ...chain.from_iterable(['ABC','DEF']) --> A B C D E F

data, selectors(d[0] if s[0]), (d[1] if s[1]), ...compress('ABCDEF',[1,0,1,0,1,1]) --> A C E F

pred, seqseq[n], seq[n+1], ... 从pred首次真值测试失败开始dropwhile(lambdax: x<5, [1,4,6,4,1]) --> 6 4 1

pred, seqseq中pred(x)为假值的元素,x是seq中的元素。filterfalse(lambdax: x%2, range(10)) --> 0 2 4 6 8

iterable[, key]根据key(v)值分组的迭代器

seq, [start,] stop [, step]seq[start:stop:step]中的元素islice('ABCDEFG',2, None) --> C D E F G

func, seqfunc(*seq[0]), func(*seq[1]), ...starmap(pow,[(2,5), (3,2), (10,3)]) --> 32 9 1000

pred, seqseq[0], seq[1], ..., 直到pred真值测试失败takewhile(lambdax: x<5, [1,4,6,4,1]) --> 1 4

it, nit1, it2, ... itn 将一个迭代器拆分为n个迭代器

p, q, ...(p[0], q[0]), (p[1], q[1]), ...zip_longest('ABCD','xy', fillvalue='-') --> Ax By C- D-

排列组合迭代器迭代器实参结果p, q, ... [repeat=1]笛卡尔积,相当于嵌套的for循环

p[, r]长度r元组,所有可能的排列,无重复元素

p, r长度r元组,有序,无重复元素例子结果product('ABCD',repeat=2)AAAB AC AD BA BB BC BD CA CB CC CD DA DB DC DD

permutations('ABCD',2)ABAC AD BA BC BD CA CB CD DA DB DC

combinations('ABCD',2)ABAC AD BC BD CD

combinations_with_replacement('ABCD', 2)AAAB AC AD BB BC BD CC CD DD

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值