python 基础教程之迭代
2014-08-16 20:18
162 查看
python的迭代相当的强大,也非常的好用。
迭代:
简单迭代:
最常见的迭代也就是for循环了
比如:
看实例:
迭代:
简单迭代:
最常见的迭代也就是for循环了for i in range(10) print i它可以遍历列表,元组,字典
并行迭代:
names = ['anna', 'beth', 'tom'] ages = ['19', '24', '27'] for name,age in zip(names,ages) print name,' is ',age,' years old!'
列表推导式:
列表推导式是用列表创建新列表比如:
[ x*x for x in range(4)] #[0, 1, 4, 9] [ x*x for x in range(4) if x%3 == 0] #[0, 9, 36, 81] [ (x,y) for x in range(2) for y in range(2)] #[(0,0), (0,1), (1,0), (1,1)]
迭代器:
迭代器,实现__iter__特殊方法是可迭代,实现了next则是迭代器,不只在元组和字典中,而且更优雅,更推荐class fibs: def __init__(self): self.a = 1 self.b = 1 def next(self): self.a, self.b = self.b, self.a + self.b if self.a > 27000:raise StopIteration #------------从迭代器中得到序列 return self.a def __iter__(self): return self if __name__ == '__main__': fibs = fibs() for f in fibs: print f fList = list(fibs) #使用list将迭代器转化为列表 print fList #对于内建的iter函数,可以从对象中获取元素,实例 it = iter([5, 6, 1, 2, 9]) print it.next() print it.next()
生成器:
任何包含yield语句的函数被称为生成器,它不像return那样返回值,而是每次产生多个值,每次产生一个值,函数就会被冻结:即函数停在那点等待被激活,函数被激活后就从停止的那点开始执行。(类似中断)看实例:
def flatten(nested): for sublist in nested: for element in sublist: yield element nested = [[3, 4], [1, 5], [2]] for num in flatten(nested): print num # 输出 3 4 1 5 2
递归生成器:
def flatten(nested): try: for sublist in nested: for element in flatten(sublist): yield element except TypeError: yield mested nested = [[3, [7, [4,[8]]]], [1, 5], [2]] for num in flatten(nested): print num # 输出 3 7 4 8 1 5 2
相关文章推荐
- Python基础教程:第2版(经典教程的全新改版,10个项目引人入胜 )
- Python基础教程,一本可以帮助你快乐学习Python的好书
- python基础教程项目1:及时标记
- Python基础教程——2列表和元组
- Python基础教程——1基础知识
- 简明 Python 基础学习教程
- Python基础教程——9魔法方法、属性及迭代器【总结】
- xml-RPC Python基础教程
- Python - 基础教程学习(第五章 & 第六章)
- Python基础教程——8 异常
- python基础教程-第1章节 基础知识
- 一些关于面向对象的思考(摘自python基础教程)
- Python基础教程1--搭建Python开发环境
- 《简明 Python 教程》笔记-----基础知识
- 【C011】Python - 基础教程学习(二)
- Python 基础教程(第2版) 中文版+英文原版下载
- python基础教程:画幅好画
- 【C010】Python - 基础教程学习(一)
- Ubuntu 安装 PostgreSQL 和 python-psycopg2基础教程(以及错误解决)
- Python基础教程——8 异常