python 高级编程 二

这次主要讲协同程序,和生成器表达式

 

协同程序:现在有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)


 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值