python itertools模块学习笔记,pythonitertools,python itert
python itertools模块学习笔记,pythonitertools,python itert
python itertools模块学习笔记
以下函数均返回迭代器
count
原型:
count(start[, step])
返回:
start, start+step, start+2*step, ... (以start为首项, step为公差的等差数列)
example:
count(10):10, 11, 12, 13, .....
cycle
原型:
cycle(p)
返回:
p0, p1, p2, ...,plast, p0, p1, ... (对序列循环遍历)
repeat
原型
repeat(elem[, n])
返回:
elem, elem, elem...( 重复n次或者无限下去)
chain
原型:
chain(p, q, ...)
返回:
p0, p1, ..., plast, q0, q1, ..., qlast, ... (一个一个地遍历这些序列的, 不必生成大序列即可这样遍历)
compress
原型:
compress(data d, selector s)
返回:
(d[0] if s[0]), (d[1] if s[1]), ...
例子:
from itertools import *for i in compress("abcdef", [1, 1, 0, 1, 0, 1]): # a, b, d, f print i
dropwhile
原型:
dropwhile(func f, seq q)
返回:
当函数f执行返回假时, 开始迭代序列
例子:
from itertools import *for i in dropwhile(lambda x:x<5, [1, 2, 6, 4, 3]):#6, 4, 3 print i
groupby
原型:
groupby(iterable[, keyfunc])
返回:按照keyfunc函数对序列每个元素执行后的结果分组(每个分组是一个迭代器), 返回这些分组的迭代器
例子:
from itertools import *a = ['aa', 'ab', 'abc', 'bcd', 'abcde']for i, k in groupby(a, len):#按照字符串的长度对a的每个元素进行分组 for m in k: print m, print i
输出:
aa ab 2abc bcd 3abcde 5
ifilter
原型:
ifilter(func, seq)
返回:对函数func执行返回真的元素的迭代器
例子:
from itertools import *a = [1, 2, 3, 4, 5]for i in ifilter(lambda x:x>3, a):#4, 5 print i
ifilterfalse
原型:
ifilterfalse(func, seq)
返回:对函数func执行返回假的元素的迭代器
islice
原型:
islice(seq[, start], stop[, step])
返回:返回序列seq的从start开始到stop结束的步长为step的元素的迭代器
from itertools import *for i in islice("abcdef", 0, 4, 2):#a, c print i
imap
原型:
imap(func, seq)
返回 :返回序列每个元素被func执行后返回值的序列的迭代器
from itertools import *for i in imap(lambda x:x+1, range(10)):#1, 2, ..., 10 print i
starup
原型:
starup(func, seq)
返回:对序列seq的每个元素作为func的参数列表执行, 返回执行结果的迭代器
例子:
from itertools import *for i in starmap(pow, [(2,2), (3, 2)]):#4, 9 print i
tee
原型:
tee(it[, n = 2])
把一个迭代器分为n个迭代器, 返回一个元组.默认是两个
from itertools import *a = "hello"c, d = tee(iter(a), 2)for i, j in zip(c, d): print i, j
输出:
h he el ll lo o
takewhile
原型:
takewhile(func, seq)
从序列的头开始, 直到执行函数func失败.
例子:
from itertools import *for i in takewhile(lambda x:x<6, range(10)):#1, 2, 3, 4, 5 print i
izip
雷同于zip
原型:
izip(iter1, iter2, ... iterN):
返回:(it1[0],it2 [0], it3[0], ..), (it1[1], it2[1], it3[1], ..)...
只要提供的某个迭代器不再生成值,迭代就会停止
izip_longest
原型同izip
只不过, 迭代过程会持续到所有输入迭代变量iter1,iter2等都耗尽为止,如果没有使用fillvalue关键字参数指定不同的值,则使用None来填充已经使用的迭代变量的值
permutations
原型:
permutations(p[, r])
返回p中任意取r个元素做排列的元组的迭代器
实例:
from itertools import *for i in permutations([1, 2, 3], 3): print i
输出:
(1, 2, 3)(1, 3, 2)(2, 1, 3)(2, 3, 1)(3, 1, 2)(3, 2, 1)
product
原型:
product(iter1, iter2, ... iterN, [repeat=1])
创建一个迭代器,生成表示item1,item2等中的项目的笛卡尔积的元组,repeat是一个关键字参数,指定重复生成序列的次数
from itertools import *for i in product([1, 2, 3], [4, 5], [6, 7]): print i
输出:
(1, 4, 6)(1, 4, 7)(1, 5, 6)(1, 5, 7)(2, 4, 6)(2, 4, 7)(2, 5, 6)(2, 5, 7)(3, 4, 6)(3, 4, 7)(3, 5, 6)(3, 5, 7)
combinations()
原型
combinations(iterable, r)
创建一个迭代器,返回iterable中所有长度为r的子序列,返回的子序列中的项按输入iterable中的顺序排序
note:不带重复
例子:
from itertools import *for i in combinations([1, 2, 3], 2): print i
输出:
(1, 2)(1, 3)(2, 3)
combinations_with_replacement
同上, 带重复 例子:
from itertools import *for i in combinations_with_replacement([1, 2, 3], 2): print i
输出:
(1, 1)(1, 2)(1, 3)(2, 2)(2, 3)(3, 3)
相关内容
- Decorate an output stream with print-like methods,decorateprint-lik
- Python合并两个字典,python合并字典,Python合并两个字典
- python生成文件目录树代码,python生成树代码,code:import
- python实现Memento模式,python实现memento,下面的例子通过
- Python生成字母,数字,特殊符号组成的随机密码,pyt
- Tkinter的ToolTip控件,tkintertooltip,Tkinter的Tool
- python中的filter方法,pythonfilter方法,filter函数:fil
- python自动连接ssh的代码,pythonssh代码,python自动连接ss
- Python处理命令行参数示例代码,python示例代码,下面代码
- Python实现简单的web server,pythonwebserver,这是Python实现的
评论关闭