文档章节

零基础学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
09/10
0
0
Python for循环的替代

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

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

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

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

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

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

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

Honghe
2013/01/04
0
1

没有更多内容

加载失败,请刷新页面

加载更多

Pycharm上Django的使用 Day8

1.添加新条目 1>编写用于添加新条目的表单 在forms.py中创建一个与模型Entry相关联的表单 1处给字段'text'指定一个空标签 2处定义小部件widgets,widgets是一个HTML表单元素 2>定义new_entry...

不会TC的猫
19分钟前
2
0
MongoDB副本集

MongoDB介绍 早期版本使用master-slave,一主一从和MySQL类似,但slave在此架构中为只读,当主库宕机后,从库不能自动切换为主 目前已经淘汰master-slave模式,改为副本集,这种模式下有一个...

chencheng-linux
32分钟前
1
0
WebService 客户端记录

https://blog.csdn.net/qiuhan/article/details/49487009

呼呼南风
32分钟前
0
0
七牛云彭垚:智能平台的创新和发展

2018 年 11 月 14 日至 11 月 18 日,第二十届中国国际高新技术成果交易会(简称高交会)在深圳成功举办,七牛云作为国内领先的以数据智能和视觉智能为核心的企业级云计算服务商受邀参展。 ...

七牛云
39分钟前
0
0
Java内存模型原理,你真的理解透彻了吗?

内存模型产生背景 在介绍 Java 内存模型之前,我们先了解一下物理计算机中的并发问题,理解这些问题可以搞清楚内存模型产生的背景。 物理机遇到的并发问题与虚拟机中的情况有不少相似之处,物...

小刀爱编程
44分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部