Python语法实践之初探列表推导与生成器
2015-05-22 23:04
281 查看
列表推导
通过列表推导可直接生成list>>> [i for i in range(10) if i % 2==0]
[0, 2, 4, 6, 8]
>>>
内建函数enumerate在循环中使用序列提供了更加便利的获得索引的方式。
>>> seq = ["one","two","three"] >>> def _treatment(pos,element): ... return '%d: %s' %(pos,element) ... >>> [_treatment(i,el) for i,el in enumerate(seq)] ['0: one', '1: two', '2: three'] >>>
也可以使用多层循环
>>> [m + n for m in 'ABC' for n in 'XYZ'] ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ'] >>>
列出主目录下的全部文件
>>> import os >>> [d for d in os.listdir('.')] ['.android', '.bash_history', '.bash_profile', '.CFUserTextEncoding', '.config', '.DS_Store', '.gitconfig', '.idlerc', '.oh-my-zsh', '.ssh', '.subversion', '.Trash', '.vim', '.viminfo', '.wireshark', '.wireshark-etc', '.zcompdump-\xe7\x8e\x8b\xe9\x9c\x84\xe7\x9a\x84MacBook Air-5.0.5', '.zsh-update', '.zsh_history', '.zshrc', '.zshrc-e', 'Applications', 'Desktop', 'Documents', 'Downloads', 'ez_setup.py', 'Library', 'Movies', 'Music', 'Pictures', 'Public'] >>>
生成器
列表推导的[ ] 改()结果则为一个生成器>>> g = (x * x for x in range(10)) >>> g <generator object <genexpr> at 0x100b4dd70> >>> g.next() 0 >>> g.next() 1 >>> g.next() 4 >>> g.next() 9 >>> g.next() 16 >>> g.next() 25 >>>
>>> [i for i in g] [36, 49, 64, 81] >>>
通过yield可以暂停一个函数并返回中间结果
>>> def fi(): ... a,b = 0,1 ... while True: ... yield b ... a,b = b,a+b ... >>> value = fi() >>> value.next() 1 >>> value.next() 1 >>> value.next() 2 >>> value.next() 3 >>>
相关文章推荐
- Python while、for、生成器、列表推导等语句的执行效率测试
- python中的列表推导与生成器
- 004_002 Python 列表推导 列表函数调用 生成器表达式 生成列表
- Python 列表推导、迭代器与生成器
- python 列表推导和生成器表达式
- Python学习笔记2:构造序列:列表推导和生成器表达式
- 010 Python语法之二维列表-迭代器生成器
- Python while、for、生成器、列表推导等语句的执行效率测试
- Python语言学习讲解十一:生成器表达式改写较大的列表推导
- Learning Python:1. 生成器函数、列表解析与map,for循环的效率对比
- Python3组合数据类型(元组、列表、集合、字典)语法
- python(四)上:列表生成式、生成器、迭代器和内置函数
- Python学习(七)——列表生成式、生成器
- python之列表解析与生成器
- 013 Python语法之文件与生成器
- python学习笔记——列表推导 list comprehension
- Python列表推导
- Python生成器结合列表生成式迭代输出每行杨辉三角函数生成的列表值
- 初学Python——列表生成式、生成器和迭代器
- Python(8): Lambda,列表解析器,生成器表达式,range函数