itertools库
迭代器(生成器)在python中是一种很常用的也很好用的数据结构,比起列表(list)来说,迭代器最大的优势就是延迟计算,按需使用。
itertools库的几种方法介绍:
itertools.accumulate:列表累加方法
1
2
3
4
|
>>> import itertools
>>> x = itertools.accumulate( range ( 10 ))
>>> print ( list (x))
[ 0 , 1 , 3 , 6 , 10 , 15 , 21 , 28 , 36 , 45 ]
|
itertools.chain:将多个列表合成一个列表的方法
1
2
3
4
5
|
>>> x = [ 1 , 2 , 3 ]
>>> y = [ 4 , 5 , 6 ]
>>> a = itertools.chain(x,y)
>>> print ( list (a))
[ 1 , 2 , 3 , 4 , 5 , 6 ]
|
itertools.combinations:求列表中指定数目的元素不重复的所有组合
注:2表示的意思是求出列表中随机2个元素搭配不重复的集合
1
2
3
4
|
>>> x = [ 1 , 2 , 3 , 4 , 5 ]
>>> a = itertools.combinations(x, 2 )
>>> print ( list (a))
[( 1 , 2 ), ( 1 , 3 ), ( 1 , 4 ), ( 1 , 5 ), ( 2 , 3 ), ( 2 , 4 ), ( 2 , 5 ), ( 3 , 4 ), ( 3 , 5 ), ( 4 , 5 )]
|
itertools.islice:对列表进行切片
注:0表示起始位置,5表示结束位置,2表示步长
1
2
3
4
|
>>> x = [ 1 , 2 , 3 , 4 , 5 ]
>>> a = itertools.islice(x, 0 , 5 , 2 )
>>> print ( list (a))
[ 1 , 3 , 5 ]
|
itertools.count:计数器,可以指定起始位置和步长
注:start表示起始位置,step表示步长
1
2
3
|
>>> x = itertools.count(start = 2 ,step = 3 )
>>> print ( list (itertools.islice(x, 5 )))
[ 2 , 5 , 8 , 11 , 14 ]
|
itertools.cycle:循环列表或者迭代器中的数据
1
2
3
|
>>> x = itertools.cycle( 'ABCD' )
>>> print ( list (itertools.islice(x, 0 , 10 , 2 )))
[ 'A' , 'C' , 'A' , 'C' , 'A' ]
|
itertools.repeat:生成一个拥有指定数量并且元素相同的迭代器
1
2
3
4
5
6
|
>>> print ( list (itertools.repeat( 'liuwei' , 5 )))
[ 'liuwei' , 'liuwei' , 'liuwei' , 'liuwei' , 'liuwei' ]
#也可用下面的方法生成相同元素的列表 >>> item = [ "liu" ] * 5
>>> print (item)
[ 'liu' , 'liu' , 'liu' , 'liu' , 'liu' ]
|
其它还有很多,用到的时候再进行总结
本文转自激情燃烧的岁月博客51CTO博客,原文链接http://blog.51cto.com/liuzhengwei521/1919807如需转载请自行联系原作者
weilovepan520