python中的列表推导浅析


Posted in Python onApril 26, 2014

列表推导(List comprehension)的作用是为了更方便地生成列表(list)。

比如,一个list变量的元素均为数字,如果需要将每个元素的值乘以2并生成另外一个list,下面是一种做法:

#-*-encoding:utf-8-*-
list1 = [1,2,4,5,12]
list2 = []
for item in list1:
    list2.append(item*2)
print list2

如果使用列表推导,可以这样:
#-*-encoding:utf-8-*-
list1 = [1,2,4,5,12]
list2 = [item*2 for item in list1 ]
print list2

可以通过if过滤掉不想要的元素,例如提取出list1中小于10的元素:
#-*-encoding:utf-8-*-
list1 = [1,2,4,5,12]
list2 = [item for item in list1 if item < 10 ]
print list2

如果要将两个list中的元素进行组合,可以:
#-*-encoding:utf-8-*-
list1 = [1,2,3]
list2 = [4,5,6]
list3 = [(item1,item2) for item1 in list1 for item2 in list2 ]
print list3

官方文档中给出了一个比较复杂的转置矩阵的例子:
#-*-encoding:utf-8-*-
matrix1 = [
          [1, 2, 3, 4],
          [5, 6, 7, 8],
          [9, 10, 11, 12]
          ]
matrix2 = [[row[i] for row in matrix1] for i in range(4)]
for row in matrix2:
    print row

运行结果如下:
[1, 5, 9]
[2, 6, 10]
[3, 7, 11]
[4, 8, 12]
Python 相关文章推荐
浅析Python中return和finally共同挖的坑
Aug 18 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
Dec 15 Python
浅谈numpy数组中冒号和负号的含义
Apr 18 Python
Python 绘图库 Matplotlib 入门教程
Apr 19 Python
Flask框架WTForm表单用法示例
Jul 20 Python
python 通过麦克风录音 生成wav文件的方法
Jan 09 Python
Python Matplotlib实现三维数据的散点图绘制
Mar 19 Python
django将数组传递给前台模板的方法
Aug 06 Python
Python Django 命名空间模式的实现
Aug 09 Python
tensorflow之并行读入数据详解
Feb 05 Python
python生成并处理uuid的实现方式
Mar 03 Python
Keras 使用 Lambda层详解
Jun 10 Python
Python中的Numpy入门教程
Apr 26 #Python
Python中的map、reduce和filter浅析
Apr 26 #Python
Python实现的Kmeans++算法实例
Apr 26 #Python
爬山算法简介和Python实现实例
Apr 26 #Python
Python操作sqlite3快速、安全插入数据(防注入)的实例
Apr 26 #Python
python实现的二叉树算法和kmp算法实例
Apr 25 #Python
python中的__init__ 、__new__、__call__小结
Apr 25 #Python
You might like
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
2009/08/28 Javascript
Jquery attr(&quot;checked&quot;) 返回checked或undefined 获取选中失效
2013/10/10 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
运用jQuery定时器的原理实现banner图片切换
2014/10/22 Javascript
浅谈JS中的bind方法与函数柯里化
2016/08/10 Javascript
微信小程序 wxapp导航 navigator详解
2016/10/31 Javascript
JavaScript实现Fly Bird小游戏
2016/12/15 Javascript
微信小程序 两种为对象属性赋值的方式详解
2017/02/23 Javascript
Angular2 组件交互实例详解
2017/08/24 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
AngularJS实现的简单拖拽功能示例
2018/01/02 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
浅谈webpack4.x 入门(一篇足矣)
2018/09/05 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
[46:20]TFT vs Secret Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python爬虫框架scrapy实战之爬取京东商城进阶篇
2017/04/24 Python
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
Python中的默认参数实例分析
2018/01/29 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
PyTorch的torch.cat用法
2020/06/28 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
英国最大的在线床超市:Bed Star
2019/01/24 全球购物
如何通过jdbc调用存储过程
2012/04/19 面试题
业务员岗位职责范本
2013/12/15 职场文书
2015年财务部工作总结
2015/04/10 职场文书
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android