文档章节

零基础学python-19.2 列表解析与序列映射函数map(2)增加分支测试与嵌套循环

raylee2015
 raylee2015
发布于 2015/10/21 08:10
字数 635
阅读 2
收藏 0
点赞 0
评论 0
这一章节我们继续来深入讨论一下python的列表解析与map,这一次我们增加了分支测试与嵌套循环,下面让我们来看看一些例子:
分支测试(if)


场景1:选出列表里面的偶数

第一种我们使用函数的形式来实现

>>> aList=[1,2,3,4,5]
>>> def test(aList):
    res=[]
    for x in range(len(aList)):
        if aList[x]%2==0:
            res.append(aList[x])
    return res


>>> test(aList)
[2, 4]
>>>


2.第二种我们采用filter

>>> list(filter(lambda x:x%2==0,[1,2,3,4,5]))
[2, 4]
>>>


3.第三种使用列表解析实现

>>> [x for x in [1,2,3,4,5] if x %2==0]
[2, 4]
>>>


场景2:选出列表里面的偶数,然后加1


第一种我们使用函数的形式来实现

>>> aList=[1,2,3,4,5]
>>> def test(aList):
    res=[]
    for x in range(len(aList)):
        if aList[x]%2==0:
            aList[x]+=1
            res.append(aList[x])
    return res




>>> test(aList)
[3, 5]


2.第二种我们采用filter、map和lambda表达式联合实现

>>> aList=[1,2,3,4,5]
>>> list(map(lambda x :x+1,filter(lambda x:x%2==0,aList)))
[3, 5]
>>>


3.第三种使用列表解析实现

>>> [x+1 for x in [1,2,3,4,5] if x %2==0]
[3, 5]
>>> 


嵌套循环


for循环嵌套在列表解析里面

>>> [x+y for x in range(4) for y in range(2)]
[0, 1, 1, 2, 2, 3, 3, 4]
>>> [(x,y) for x in range(4) for y in range(2)]
[(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1), (3, 0), (3, 1)]
>>>


等价for循环代码

>>> def test():
    res=[]
    for x in range(4):  
        for y in range(2):
            res.append(x+y)
    return res


>>> test()
[0, 1, 1, 2, 2, 3, 3, 4]
>>> 


>>> def test():
    res=[]
    for x in range(4):  
        for y in range(2):
            res.append((x,y))
    return res


>>> test()
[(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1), (3, 0), (3, 1)]
>>>


我们上面是两个序列解析,它还可以增强到N个序列解析,形成N*N的矩阵
综合运用分支测试和嵌套循环来解析列表


下面我们举出一些例子:

>>> [(x,y) for x in range(4) if x%2==0 for y in range(5) if y%2!=0]
[(0, 1), (0, 3), (2, 1), (2, 3)]
>>>


等级代码

>>> def test():
    res=[]
    for x in range(4):
        if x%2==0:
            for y in range(5):
                if y%2!=0:
                    res.append((x,y))
    return res


>>> test()
[(0, 1), (0, 3), (2, 1), (2, 3)]
>>>



总结:这一章节主要介绍了增加分支测试与嵌套循环来解析列表。


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

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

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

 



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

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

共有 人打赏支持
raylee2015
粉丝 6
博文 265
码字总数 44224
作品 0
江门
Python爬虫入门 | 3 爬虫必备Python知识

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

ch3ruf0termb3yh
04/20
0
0
Python编程实践 学习笔记

Practical Programming-An Introduction to Computer Science Using Python 这本书是Jennifer Campbell等著,唐学韬(汕头大学)译,全书300页,虽内容不多,但个人认为译者比较负责,如未统一...

Honghe
2013/01/04
0
1
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 lambda函数

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

乐晨
2013/04/12
0
3
Python编程规范及性能优化

Python编程规范及性能优化 Ptyhon编程规范 编码 所有的 Python 脚本文件都应在文件头标上 # -- coding:utf-8 -- 。设置编辑器,默认保存为 utf-8 格式。 注释 业界普遍认同 Python 的注释分为...

陶邦仁
2013/01/16
0
1
python语法小细节及小定义(一)

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

戴千岩
2017/09/26
0
0
python2.x和python3.x的区别

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

leejia1989
06/26
0
0
Python 2 和 Python 3 主要区别有哪些(一)?

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

liuzhijun
2017/08/02
0
0
七日Python之路--第二天

由于之前使用过一段Ubuntu,所以基本命令啥的都还可以。装差利器Vim也是使用过一段时间的。 Ubuntu快速打开终端Alt+Ctrl+T,这样才显得犀利一些嘛。说实话,终端编辑文件啥的,确实比Win下面...

明天以后
2014/07/22
0
0
learning python之函数

每次对函数的调用都创建了一个新的本地作用域 LEGB作用域查找原则:当引用一个变量,先在本地作用域找,然后在上层函数域找,然后是全局作用域,最后是内置作用域 global是一个命名空间的声明...

杨一
2011/03/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Webpack使用nodemon实时打包编译

业务场景: 1.编写一个npm组件包并且link到了项目文件中 2.需要不断的修改并run build编译npm包并且在项目run dev 查看效果 3.问题: 每次改完npm包都要手动run build编译十分的麻烦且低效,可不...

JamesView
15分钟前
0
0
电脑炸了,浪费我好几天时间,还是简要记下来吧

我的小本本一直在兢兢业业的干活,然而前几天说炸就炸了...... 爆炸现场: 软件: windows10 pro + EIS11+ 360卫士 BIOS:N1DET98W 2.24 硬件: Xeon E3 1505-V5 nv-M3000M thinkpadP70:20E...

Oh_really
19分钟前
0
0
Git之branch和checkout

1.branch是查看、创建、删除分支 #>git branch --helpNAME git-branch - List, create, or delete branchesSYNOPSIS git branch [--color[=<when>] | --no-color] [......

汉斯-冯-拉特
21分钟前
0
0
Mybatis拦截器之数据权限过滤与分页集成

需求场景 最近项目有个数据权限的业务需求,要求大致为每个单位只能查看本级单位及下属单位的数据,例如:一个集团军下属十二个旅,那么军级用户可以看到所有数据,而每个旅则只能看到本旅部...

佛系程序猿灬
30分钟前
8
0
SpringCloud 微服务 (十六) 服务追踪 Zipkin

问题 在服务中,有一个接口,该A接口中又调用了其他服务的B、C、D接口,出现一个请求耗时大的问题,这时候并不知道该B、C、D接口中哪个接口造成的耗时量,然后比如确定C服务接口出现的耗时量大,但...

___大侠
今天
0
0
Java面试基础篇——第八篇:抽象类与接口的区别

1.抽象类 抽象类:如果一个类中包含有抽象方法,或这个类使用abstract关键字修饰,则称这个类是抽象类。 抽象方法是什么呢?抽象方法就是指用abstract关键字修饰的方法。 需要注意的是:抽象...

developlee的潇洒人生
今天
2
0
jsoup 相关资料

1.jsoup 2.Jsoup概述 3.jsoup入门 4.jsoup Java HTML Parser 1.11.3 API

IT追寻者
今天
1
0
JPA @MappedSuperclass 注解说明

基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中。 1.@MappedSuperclass注解只能标准在类上:@Target({java.lang....

海博1600
今天
0
0
【一】Scala Configuration 相关API

Play使用了 Typesafe config library,但是也提供了一个有着更多Scala高级特性的的 Configuration 封装。不熟悉Typesafe配置的开发者可以移步 configuration文件的语法和特性文档。 读取配置...

Landas
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部