Python 内置模块itertools的使用
2017-04-10 16:49
691 查看
Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数,返回的是迭代器对象(实现__next__函数的类)。
1、itertools提供的几个“无限”迭代器:
(1)、count函数
import itertools
natuals = itertools.count(1)
for n in natuals:
print n
count()会创建一个无限的迭代器,所以上述代码会打印出自然数序列,根本停不下来,只能按Ctrl+C退出
i= 0
foritem in itertools.count(100):
if i>10:
break
print item,
i = i+1
功能:从100开始数10个数,cout返回一个无界的迭代器,小菜鸟我不会控制了,就引入了一个计数I,让它计数10次。。
输出:100 101 102 103 104105 106 107 108 109 110
(2)、cycle()会把传入的一个序列(字符串也是序列的一种)无限重复下去:
import itertools
listone= ['a','b','c']
listtwo= ['11','22','abc']
foritem in itertools.cycle(listone):
print item,
打印出a b c a b c a b c ab c a b c a b c a b c a b c a b c...
功能:从列表中取元素,到列表尾后再从头取...
无限循环,因为cycle生成的是一个无界的迭代器
(3)、repeat()负责把一个元素无限重复下去,不过如果提供第二个参数就可以限定重复次数:
ns = itertools.repeat('A', 10)
for n in ns:
print n 打印10次'A'
import itertools
listone = ['a','b','c']
for item initertools.repeat(listone,3):
print item,
2、其他的迭代器操作函数
(1)、chain()可以把一组迭代对象串联起来,形成一个更大的迭代器:
import itertools
listone = ['a','b','c']
listtwo = ['11','22','abc']
for item in itertools.chain(listone,listtwo):
print item
输出:a b c 11 22 abc
(2)、ifilter的使用
ifilter(fun,iterator)
返回一个可以让fun返回True的迭代器
import itertools
listone = ['a','b','c']
listtwo = ['11','22','abc']
def funLargeFive(x):
if x > 5:
return True .
for item initertools.ifilter(funLargeFive,range(-10,10)):
print item,
结果:6 7 8 9
(3)、imap的使用
imap(fun,iterator)
返回一个迭代器,对iterator中的每个元素调用fun
import itertools
listthree = [1,2,3]
def funAddFive(x):
return x + 5
for item in itertools.imap(funAddFive,listthree):
print item,
返回:6 7 8 对listthree中的元素每个加了5后返回给迭代器
(5)、islice的使用
islice()(seq, [start,] stop [, step])
import itertools
listone = ['a','b','c']
listtwo = ['11','22','abc']
listthree = listone + listtwo
for item in itertools.islice(listthree,3,5):
print item,
功能:返回迭代器,其中的项目来自 将seq,从start开始,到stop结束,以step步长切割后
打印出:11 22
(4)、izip的使用
izip(*iterator) 返回的是元组列表的迭代器对象
import itertools
listone = ['a','b','c']
listtwo = ['11','22','abc']
listthree = listone + listtwo
for item in itertools.izip(listone,listtwo):
print item,
结果:('a', '11') ('b', '22') ('c', 'abc')
功能:返回迭代器,项目是元组,元组来自*iterator的组合
1、itertools提供的几个“无限”迭代器:
(1)、count函数
import itertools
natuals = itertools.count(1)
for n in natuals:
print n
count()会创建一个无限的迭代器,所以上述代码会打印出自然数序列,根本停不下来,只能按Ctrl+C退出
i= 0
foritem in itertools.count(100):
if i>10:
break
print item,
i = i+1
功能:从100开始数10个数,cout返回一个无界的迭代器,小菜鸟我不会控制了,就引入了一个计数I,让它计数10次。。
输出:100 101 102 103 104105 106 107 108 109 110
(2)、cycle()会把传入的一个序列(字符串也是序列的一种)无限重复下去:
import itertools
listone= ['a','b','c']
listtwo= ['11','22','abc']
foritem in itertools.cycle(listone):
print item,
打印出a b c a b c a b c ab c a b c a b c a b c a b c a b c...
功能:从列表中取元素,到列表尾后再从头取...
无限循环,因为cycle生成的是一个无界的迭代器
(3)、repeat()负责把一个元素无限重复下去,不过如果提供第二个参数就可以限定重复次数:
ns = itertools.repeat('A', 10)
for n in ns:
print n 打印10次'A'
import itertools
listone = ['a','b','c']
for item initertools.repeat(listone,3):
print item,
2、其他的迭代器操作函数
(1)、chain()可以把一组迭代对象串联起来,形成一个更大的迭代器:
import itertools
listone = ['a','b','c']
listtwo = ['11','22','abc']
for item in itertools.chain(listone,listtwo):
print item
输出:a b c 11 22 abc
(2)、ifilter的使用
ifilter(fun,iterator)
返回一个可以让fun返回True的迭代器
import itertools
listone = ['a','b','c']
listtwo = ['11','22','abc']
def funLargeFive(x):
if x > 5:
return True .
for item initertools.ifilter(funLargeFive,range(-10,10)):
print item,
结果:6 7 8 9
(3)、imap的使用
imap(fun,iterator)
返回一个迭代器,对iterator中的每个元素调用fun
import itertools
listthree = [1,2,3]
def funAddFive(x):
return x + 5
for item in itertools.imap(funAddFive,listthree):
print item,
返回:6 7 8 对listthree中的元素每个加了5后返回给迭代器
(5)、islice的使用
islice()(seq, [start,] stop [, step])
import itertools
listone = ['a','b','c']
listtwo = ['11','22','abc']
listthree = listone + listtwo
for item in itertools.islice(listthree,3,5):
print item,
功能:返回迭代器,其中的项目来自 将seq,从start开始,到stop结束,以step步长切割后
打印出:11 22
(4)、izip的使用
izip(*iterator) 返回的是元组列表的迭代器对象
import itertools
listone = ['a','b','c']
listtwo = ['11','22','abc']
listthree = listone + listtwo
for item in itertools.izip(listone,listtwo):
print item,
结果:('a', '11') ('b', '22') ('c', 'abc')
功能:返回迭代器,项目是元组,元组来自*iterator的组合
相关文章推荐
- [转]可爱的 Python:: 使用 itertools 模块中的组合函数
- Python提供了以下几个内置tools模块:operator collections itertools functools
- Python:itertools模块 combinations和product的使用
- Python:itertools模块 combinations和product的使用
- Python学习笔记(三十七)— 内置模块(6)itertools
- Python中itertools模块
- Python中itertools模块用法详解
- Python使用模块Pyserial模块报<ImportError:No module named tools.list_ports>
- python itertools和迭代器的使用
- python中itertools模块介绍---03
- Python itertools的使用
- Python模块 - itertools循环器模块
- 使用Python内置的模块与函数进行不同进制的数的转换
- 使用python的内置ctypes模块与c、c++写的dll进行交互
- Python 内置模块turtle模块的使用
- 使用python的内置ctypes模块与c、c++写的dll进行交互
- Python中itertools模块用法详解
- python itertools的使用
- Python:itertools模块
- 使用Python内置的模块与函数进行不同进制的数的转换