推导式 与 生成器表达式
来源:互联网 发布:淘宝能买到恐怖水琴吗 编辑:程序博客网 时间:2024/06/01 09:12
推导式:
先讲列表推导式, 其它推导式皆与之类似.
列表推导式由一个包含表达式的中括号组成, 表达式后面跟随一个for子句, 之后可以有0个或多个for子句或if子句.
由于是用中括号括起来的, 所以得到的是一个列表, 它为从一个序列中创建列表提供了一个简单的方法.
其实,表达式就是将存储在列表中的每一项的原型, 表达式后面的语句就是 这个原型所满足的约束条件.
so, 列表推导式 = [ 表达式 + 约束语句]
例一: 将输出 0 ~ 9 的平方
例三:
列表推导式还可以嵌套:
官方文档上有一个经典的例子:
考虑以下的 3x4 矩阵, 一个列表中包含三个长度为4的列表:
同理, 集合推导式和列表推导式类似, 只是表达式外面不是中括号 [ ], 而是大括号 { },字典推导式外面也是大括号, 不同的是字典推导式中的表达式的形式是 " key : value "罢了.
生成器表达式:
生成器表达式和上面讲述的推导式十分相似, 它是为函数服务的. 相当于将所得 列表/元组/集合/字典 当作函数的参数.
一个例子:
即计算 0 ~ 9 的平方的和, 即计算 0^2 + 1^2 + ... + 9^2 = 285
先讲列表推导式, 其它推导式皆与之类似.
列表推导式由一个包含表达式的中括号组成, 表达式后面跟随一个for子句, 之后可以有0个或多个for子句或if子句.
由于是用中括号括起来的, 所以得到的是一个列表, 它为从一个序列中创建列表提供了一个简单的方法.
其实,表达式就是将存储在列表中的每一项的原型, 表达式后面的语句就是 这个原型所满足的约束条件.
so, 列表推导式 = [ 表达式 + 约束语句]
例一: 将输出 0 ~ 9 的平方
list = [x**2 for x in range(10)]for inde in range(10): print list[inde]
a = [(x,y) for x in [1,2,3,4,5] for y in [3,4,5] if x != y]print a,
例三:
vecs = [-1,-2,-3,-4,-5]array = [abs(x)**2 for x in vecs]print array
列表推导式还可以嵌套:
官方文档上有一个经典的例子:
考虑以下的 3x4 矩阵, 一个列表中包含三个长度为4的列表:
matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12],]
如果, 现在你想交换矩阵的行和列, 可以用嵌套的列表推导式:
print [[ROW[i] for ROW in matrix] for i in range(4)]
同理, 集合推导式和列表推导式类似, 只是表达式外面不是中括号 [ ], 而是大括号 { },字典推导式外面也是大括号, 不同的是字典推导式中的表达式的形式是 " key : value "罢了.
生成器表达式:
生成器表达式和上面讲述的推导式十分相似, 它是为函数服务的. 相当于将所得 列表/元组/集合/字典 当作函数的参数.
一个例子:
sum(i*i for i in range(10))
即计算 0 ~ 9 的平方的和, 即计算 0^2 + 1^2 + ... + 9^2 = 285
0 0
- 推导式 与 生成器表达式
- Python学习(二): 列表推导式与生成器表达式
- Python列表推导式和生成器表达式
- 面向过程编程、三元表达式、列表推导式与生成器表达式
- python基础-生成器进阶(send、from)、各种推导式、生成器表达式
- python 列表推导和生成器表达式
- Python生成器与生成器表达式
- python中的列表推导与生成器
- 流畅的python笔记2.2 列表推导式和生成器表达式
- 列表解析式与生成器表达式
- Python中的列表推导和生成器表达式的使用
- Python列表推导式、字典推导式、生成器示例
- Python的生成器表达式与生成器函数
- Python的列表推导式、迭代器、生成器
- python推导式,匿名函数lambda,生成器
- 【Python学习笔记】-Python中三目表达式与推导式
- 列表解析与生成器表达式
- Python语法实践之初探列表推导与生成器
- Android消息推送完美方案
- 字符串、列表、字典、元组
- C++ 11右值引用
- 浙大PAT (Advanced Level) Practise 1043Is It a Binary Search Tree (25)
- 【Leetcode】Valid Palindrome JAVA
- 推导式 与 生成器表达式
- ubuntun轻量级系列比较--Lubuntu14.10 与 Xubuntu14.10体验与区别
- Latent Dirichlet Distribution
- poj1850 Code
- 6. 模块
- iOS入门-基础控件总结(一)
- VS2012变化的快捷键
- 8. 错误和异常
- SQL结合作业实现将一个表的数据抓到另一个表中