文档章节

零基础学python-19.4 为什么要在意列表解析与序列映射函数map

raylee2015
 raylee2015
发布于 2015/10/21 08:10
字数 677
阅读 0
收藏 0
点赞 0
评论 0

这一章节我们来讨论一下为什么要在意列表解析与序列映射函数map,也就是为什么要有前面的几个章节?

答案:就是对于迭代序列,每一个序列的对象只进行一种操作,它能够提供精简的代码


我们下面举两个例子:

1.去掉每一行的换行符

>>> [item for item in open('output_file.txt')]
['aaaaa\n', 'bbbbb\n', 'accccc\n', 'ddddd\n', 'afffff']
>>>

上面的例子是不是非常的熟悉呢?其实我们在前面的列表解析初探的时候已经出现过,现在再一次引用,我们现在需要的操作是每一行去掉换行符

下面我们提供几种实现方法:

* 使用列表解析:

>>> [item.rstrip() for item in open('output_file.txt')]
['aaaaa', 'bbbbb', 'accccc', 'ddddd', 'afffff']

>>> [line.rstrip() for line in open('output_file.txt').readlines()]
['aaaaa', 'bbbbb', 'accccc', 'ddddd', 'afffff']
>>>

* 使用map:

>>> list(map(lambda line:line.rstrip() , open('output_file.txt')))
['aaaaa', 'bbbbb', 'accccc', 'ddddd', 'afffff']
>>>
>>> def test(line):
	return line.rstrip()

>>> list(map(test,open('output_file.txt')))
['aaaaa', 'bbbbb', 'accccc', 'ddddd', 'afffff']
>>>

* 使用for循环

>>> def test():
	res=[]
	for line in open('output_file.txt'):
		res.append(line.rstrip())
	return res

>>> test()
['aaaaa', 'bbbbb', 'accccc', 'ddddd', 'afffff']
>>>

上面三种方法,我们从两个方面评判:

* 可读性:3>1>2

* 性能:1>2>3

这种时候我们就需要从实际当中出发,调研我们的应用里面究竟需要哪种实现。

当然,笔者认为,在当今的应用当中,除了像互联网公司的那种高并发应用才追求性能,对于一般的应用,可读性比性能来的更加重要,毕竟对于一般应用,薄弱环节在于人,而不在于性能。


2.读取sql数据的属性

由于python的标准sql返回对象是这种形式:列表嵌套元组,列表就是表,元组就是行,对象就是列

返回的对象:

>>> obj=[('ray','16','man'),('jack','20','man'),('rose','22','woman')]
>>>

我们下面还是使用三种方法读取里面的名字属性

* 使用列表解析:

>>> obj=[('ray','16','man'),('jack','20','man'),('rose','22','woman')]
>>> [name for (name,age,sex) in obj]
['ray', 'jack', 'rose']
>>>

* 使用map:

>>> obj=[('ray','16','man'),('jack','20','man'),('rose','22','woman')]
>>> list(map(lambda row:row[0],obj))
['ray', 'jack', 'rose']
>>>

* 使用for循环

>>> obj=[('ray','16','man'),('jack','20','man'),('rose','22','woman')]
>>> def test(obj):
	res=[]
	for line in obj:res.append(line[0])
	return res

>>> test(obj)
['ray', 'jack', 'rose']
>>>


总结:这一章节我们举例说明了为什么要在意列表解析与序列映射函数map,还有一些注意的地方。


这一章节就说到这里,谢谢大家

------------------------------------------------------------------

点击跳转零基础学python-目录


版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/raylee2007/article/details/48711645

共有 人打赏支持
raylee2015
粉丝 6
博文 265
码字总数 44224
作品 0
江门
Python 2 和 Python 3 主要区别有哪些(一)?

Guido(Python之父,仁慈的独裁者)在设计 Python3 的过程中,受一篇文章 “Python warts” 的影响,决定不向后兼容,否则无法修复大多数缺陷。---摘录自《流畅的Python》 你可能从来没有听说...

liuzhijun
2017/08/02
0
0
python2.x和python3.x的区别

Python的3.0版本,常被称为Python3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python3.0在设计的时候没有考虑向下相容。许多针对早期Python版本...

leejia1989
06/26
0
0
python lambda函数

python允许用lambda来创建匿名函数,匿名是因为不需要以标准的方式来声明,而def创建的方法是有名称的,它们主要有2个地方不一样 1.lambda表达式返回可调用的函数对象.但不会把这个函数对象赋给...

乐晨
2013/04/12
0
3
python内置函数map/reduce/filter

python有几个内置的函数很有意 思:map/filter/reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并。 是python列表方法的三架马车。 filter() 函数: f...

itfanr
2014/12/20
0
0
Python 2 和 Python 3 有哪些主要区别?

语法 print不再是语句,而是函数,比如原来是 print 'abc' 现在是 print('abc') 但是 python2.6+ 可以使用 from future import print_function 来实现相同功能 在Python 3中,没有旧式类,只...

cooffeelis
03/05
0
0
python语法小细节及小定义(一)

首先,Python是强类型语言,动态类型语言。 那么什么是强类型语言?就是数据类型非常固定的语言,例如说python中的str类型数据和int类型数据不能互相作用。而c和js就是弱类型语言。 动态类型...

戴千岩
2017/09/26
0
0
转行零基础该如何学Python?这些一定要明白!

转行零基础学Python编程开发难度大吗?从哪学起?近期很多小伙伴问我,如果自己转行学习Python,完全0基础能否学会呢?Python的难度到底有多大?今天,小编就来为大家详细解读一下这个问题。...

猫咪编程
前天
0
0
learning python之语句

L=[1,2] >>>M=L >>>L=L+[3,4] >>>L,M ([1,2,3,4], [1,2]) +=隐含了对列表在原处作修改的意思 >>>L=[1,2]

杨一
2011/03/21
0
0
Python爬虫入门 | 3 爬虫必备Python知识

点击上方蓝色字体,关注我们 15 这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源。看着文章,打开电脑动手实践,平均45分钟就...

ch3ruf0termb3yh
04/20
0
0
Python3: fp-growth算法代码(提供py文件,可直接调用)

一、写在前面 fp-growth算法是一个生成频繁项集的算法,其主要利用了FP树的数据结构,整个生成过程只需要遍历数据集2次。 本fp-growth代码是基于开源代码fp-growth的实现(github代码:https...

quiet_girl
05/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Crontab作业时间设置

今天,遇到这么一个题目,周一到周五的9:00-16:59之间,每隔两分钟将某个命令运行一次。给的答案是: */2 9-16 * * 1-5 /usr/sbin/somecommand dosomething 乍一看,这个答案不对,应...

大别阿郎
1分钟前
0
0
ES17-JAVA API文档管理

1.保存文档 可以通过json工具把java对象转换成json字符串进行保存,也可以通过内置的帮助类直接构建json格式 /** * 获取客户端 * * @return */public static TransportClie...

贾峰uk
1分钟前
0
0
Python代码规范和命名规范

前言 Python 学习之旅,先来看看 Python 的代码规范,让自己先有个意识,而且在往后的学习中慢慢养成习惯 一、简明概述 1、编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头...

blackfoxya
4分钟前
0
0
联动滑动之一:NestScrollChild和NestedScrollingParent

NestScrollChild和NestedScrollingParent 吐槽一下开源中国竟然标题字数有限制 由于项目中使用了CoordinateLayout来解决联动以及实现炫酷的UI效果,那么必须就要研究一波源码了,毕竟知其然知...

JerryLin123
22分钟前
0
0
cloudera spark2.2 读写hbase

cloudera spark2.2 读写hbase 例子 host = 'bigdata-03,bigdata-05,bigdata-04'conf = { "hbase.zookeeper.quorum": host, "hbase.mapreduce.inputtable": "student1"}k......

osenlin
26分钟前
0
0
数据库规范化

转载自 一个小时学会MySQL数据库 地址:http://www.cnblogs.com/best/p/6517755.html 截取其中 1.4 部分 用于自己学习使用 感谢作者:张果 1.4、数据库规范化 经过一系列的步骤,我们现在终于...

十万猛虎下画山
27分钟前
0
0
ios逆向之工具篇

Reveal:查看任意app的UI结构 注:1.不越狱的手机,可以用Reveal来查看自己app的UI结构,不能查看其它app的结构。 2.越狱手机上可以查看任意app的UI结构。 IDA:反编译工具 从App Store下载的...

HeroHY
27分钟前
0
0
EOS区块链平台智能合约示例HelloWorld

我们将介绍一个使用EOS智能合约构建hello World的例子。 一般环境设置通过上一篇文章已经说明,这方面的问题大家可以看本博客上一篇文章,本文引用了官方EOS在Git上的示例。 运行nodeos 要通...

笔阁
30分钟前
0
0
Scrapy爬虫框架简单解析 

scrapy框架解析 Scrapy框架大致包括以下几个组件:Scrapy Engine、Spiders、Scheduler、Item Pipeline、Downloader; 组件 Scrapy Engine 这是框架的核心,负责控制数据流在整个系统的各个组...

zhujun2017
30分钟前
0
0
Vue之ref详解与实例

尽管存在 prop 和事件,有的时候你仍可能需要在 JavaScript 里直接访问一个子组件。为了达到这个目的,你可以通过 ref 特性为这个子组件赋予一个 ID 引用。ref可以加在父级组件上也可以加在子...

tianyawhl
38分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部