文档章节

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

raylee2015
 raylee2015
发布于 2015/10/21 08:10
字数 635
阅读 3
收藏 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基础总结成千行代码,让Python入门更简单!

只要学会这千行代码,不管你是零基础还是弱基础或是没有接触过编程,都可以快速入门Python!当时我就不信邪啊,等我看完之后,即使作为一个Python老鸟了,还是领会到了很多教授他的独特见解!...

糖宝lsh
2018/09/10
0
0
Python for循环的替代

首先,让我们退一步看看在写一个for循环背后的直觉是什么: 遍历一个序列提取出一些信息 从当前的序列中生成另外的序列 写for循环已经是我的第二天性了,因为我是一个程序员 幸运的是,Pytho...

阿豪boy
2018/02/07
0
0
Python爬虫入门 | 3 爬虫必备Python知识

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

ch3ruf0termb3yh
2018/04/20
0
0
零基础学python,看完这篇文章,你的python基础就差不多了!干货【2】

运算符 3.1 算数运算符 是完成基本的算术运算使用的符号,用来处理四则运算,而“+”和“*”还可以用来处理字符串。 3.2 比较(关系)运算符 Python 2.x 中判断 不等于 还可以使用 <> 运算符...

糖宝lsh
2018/11/06
0
0
Python编程实践 学习笔记

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

Honghe
2013/01/04
0
1

没有更多内容

加载失败,请刷新页面

加载更多

vue 对对象的属性进行修改时,不能渲染页面 vue.$set()

我在vue里的方法里给一个对象添加某个属性时,我console.log出来的是已经更改的object ,但是页面始终没有变化 原因如下: **受现代 JavaScript 的限制 (而且 Object.observe 也已经被废弃),...

Js_Mei
今天
2
0
开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
12
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
8
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
5
0
XML

学习目标  能够说出XML的作用  能够编写XML文档声明  能够编写符合语法的XML  能够通过DTD约束编写XML文档  能够通过Schema约束编写XML文档  能够通过Dom4j解析XML文档 第1章 xm...

stars永恒
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部