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脚本实现DNSPod DNS动态解析域名
Feb 14 Python
python实现在控制台输入密码不显示的方法
Jul 02 Python
python实现实时监控文件的方法
Aug 26 Python
python如何对实例属性进行类型检查
Mar 20 Python
Python中文件的写入读取以及附加文字方法
Jan 23 Python
python实现简单图片物体标注工具
Mar 18 Python
使用Python操作FTP实现上传和下载的方法
Apr 01 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
Apr 18 Python
Python selenium页面加载慢超时的解决方案
Mar 18 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
Apr 20 Python
python 爬虫请求模块requests详解
Dec 04 Python
解决Pycharm 运行后没有输出的问题
Feb 05 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正确配置mysql(apache环境)
2011/08/28 PHP
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
通过DOM脚本去设置样式信息
2010/09/19 Javascript
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
2016/04/12 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
微信小程序表单验证功能完整实例
2017/12/01 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
vue2.0+vue-router构建一个简单的列表页的示例代码
2019/02/13 Javascript
微信小程序使用蓝牙小插件
2019/09/23 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
python list 合并连接字符串的方法
2013/03/09 Python
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
Python实现将16进制字符串转化为ascii字符的方法分析
2017/07/21 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
详解python程序中的多任务
2020/09/16 Python
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
《黄河颂》教学反思
2014/02/07 职场文书
保险公司早会主持词
2014/03/22 职场文书
档案保密承诺书
2014/06/03 职场文书
授权委托书格式
2014/07/31 职场文书
小学领导班子对照材料
2014/08/23 职场文书
总经理司机岗位职责
2015/04/10 职场文书
nginx安装以及配置的详细过程记录
2021/09/15 Servers
关于Python中进度条的六个实用技巧分享
2022/04/05 Python