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 相关文章推荐
wxpython学习笔记(推荐查看)
Jun 09 Python
python字符串排序方法
Aug 29 Python
python分析nignx访问日志脚本分享
Feb 26 Python
Python File readlines() 使用方法
Mar 19 Python
Python实现的读取电脑硬件信息功能示例
May 30 Python
python操作excel文件并输出txt文件的实例
Jul 10 Python
Django学习之文件上传与下载
Oct 06 Python
Django和Flask框架优缺点对比
Oct 24 Python
Python中xml和dict格式转换的示例代码
Nov 07 Python
Python 元组拆包示例(Tuple Unpacking)
Dec 24 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 Python
python自动生成sql语句的脚本
Feb 24 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
PHP 快速排序算法详解
2014/11/10 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
2019/10/10 PHP
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
prototype 中文参数乱码解决方案
2009/11/09 Javascript
网页图片延时加载的js代码
2010/04/22 Javascript
理解Javascript_12_执行模型浅析
2010/10/18 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
2016/04/06 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
jQuery实现异步上传一个或多个文件
2020/08/17 jQuery
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
python基础教程之五种数据类型详解
2017/01/12 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
2018/01/09 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
2020/06/08 Python
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
澳大利亚牛仔裤商店:Just Jeans
2016/10/13 全球购物
SQL语言面试题
2013/08/27 面试题
中专生自我鉴定
2013/12/17 职场文书
高中同学会活动方案
2014/08/14 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
安全责任协议书范本
2016/03/23 职场文书
你会写请假条吗?
2019/06/26 职场文书
JS实现九宫格拼图游戏
2022/06/28 Javascript