这次主要讲协同程序,和生成器表达式
协同程序:现在有twisted不知道是不是也是跟这个有关系。。
import multitask
import time
def task1():
for i in xrange(3):
print "T1"
yield i
def task2():
for i in xrange(3):
print "T2"
yield i
multitask.add(task1())
multitask.add(task2())
multitask.run()
生成器表达式:其实跟列表表达式基本一样,就是把方括号改成圆括号
it = (x**3 for x in xrange(100) if x % 3 ==1)
print it.next()
下面介绍了itertools模块,提供了多种高效的迭代器实现
第一个 islice(a,b,c) a 一个可以迭代的容器, b 开始编码,c 结束编码
import itertools as it
def test1():
while 1:
print "please input a sentence:"
value = raw_input().strip()
while value !="":
for item in it.islice(value.split(),2,4):
yield item
value = raw_input().strip()
t = test1()
print t.next()
print t.next()
print t.next()
print t.next()
print t.next()
print t.next()
print t.next()
第二个 tee(), 给一个可迭代的对象,返回两个或者多个迭代器
import itertools as it
a,b =it.tee("aa bb cc dd".split())
print a.next(),a.next(),a.next()
print b.next(),b.next(),b.next()
第三个 groupby: 输入一个可迭代的对象,返回两个值,一个是group的对象,另外一个是group对象的列表,如:
a ['a', 'a', 'a', 'a']
import itertools as it
for a,b in it.groupby("aaaabbccc"):
print a,list(b)