内容摘要

Python中存在一种特殊的表达式,名为推导式,它的作用是将一种数据结构作为输入,再经过过滤计算等处理,最后输出另一种数据结构。根据数据结构的不同会被分为列表推导式、

文章正文

Python中存在一种特殊的表达式,名为推导式,它的作用是将一种数据结构作为输入,再经过过滤计算等处理,最后输出另一种数据结构。根据数据结构的不同会被分为列表推导式、集合推导式和字典推导式。我们先着重来介绍最常使用的列表推导式。

我们先看一下列表推导式的语法格式:

listname = [expression for variable in 对象(if condition)]

listname:新生成的列表名字

expression:表达式

variable:变量名

(if condition):用于从对象中选择符合要求的列表

我们分别从规定范围的数值列表、规定条件的列表和符合条件元素组成的列表三个方面讲起。

    1. 规定范围的数值列表

我们先思考一下当我们需要生成10个数字并存放列表当中,我们先看一下普通方式:

listname = []

for in range(10):

   listname.append(i)

print(listname)

输出结果为:

[0123456789]

而使用列表推导式只需要一行就可以:

listname = [i for in range(10)]

输出结果为:

[0123456789]

这种方式能简化我们在定义列表时的操作。

    2. 根据规定条件生成列表

假定我们已知一个列表为 listname = [1,3,5,6,7,9,10,23,26,28,64,98],我们要找到其把里面的数全部加5,普通方法:

listname = [1,3,5,6,7,9,10,23,26,28,64,98]

for in range(len(listname)):

      listname[i] += 5

print(listname)

输出结果为:

[68101112141528313369103]

而使用列表推导式同样很简洁:

listname = [1,3,5,6,7,9,10,23,26,28,64,98]

listname = [ i + 5 for in listname]

输出:

[68101112141528313369103]

3. 符合条件的元素组成的列表

这种类型的列表推导式要比前两种复杂点,但是能简化更多的代码。

我们先举个列子来看一下代码格式:

已知一个列表为listname = [8,33,53,64,73,95,101,123,126,164,198],然后我们要找到列表中小于大于100的数字,然后乘上0.8,最后返回到列表中。

如果我们使用普通方法:

listname = [10,20,30,40,60,120,130,140,160,180,200]

newlist = []#创建新列表来存储

for in range(len(listname)):#索引值遍历

    if listname[i] >100:#找到大于100的数

        listname[i] *= 0.8#乘上0.8

        newlist.append(listname[i])#添加到新列表中

print(newlist)

输出结果为:

[96.0104.0112.0128.0144.0160.0]

使用列表推导式:

listname = [10,20,30,40,60,120,130,140,160,180,200]

newlist = [i*0.8 for in listname if i > 100]

print(newlist)

输出结果:

[96.0104.0112.0128.0144.0160.0]

我们来根据这个例子的语法结构来分析一下:

在使用复杂的列表推导式的时候我们可以采用这种方式,可以理解为我们先把符合条件的元素(条件语句)从对象中挑选出来,然后再经过输出表达式的处理,最后存放到了列表当中,形成新的列表。

4. 例题

下面提供几道例题可以尝试着做一下。

1.列表[1,2,13,22,25],请使用使用列表推导式提取出大于10的数,并把每个数平方,最终输出。

运行结果为:

[169484625]

代码如下,可以先尝试做完参考答案。

list = [1,2,13,22,25]

newlist = [i * for in list if i >10]

print(newlist)

2.列表推导式求列表所有奇数并构造新列表,list =  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

代码如下:

list = [12345678910]

newlist = [i for in list if i%2 ==1]

print(newlist)

输出结果为:

[13579]

列表推导式_Python教程相关推荐

  1. python用列表推导式_python如何使用列表推导式

    python使用列表推导式的方法:1.用于使用其他列表创建一个新列表:2.可以对原列表进行变换和筛选:3.对多重嵌套的list进行变换筛选. python使用列表推导式的方法: python中列表推导 ...

  2. python列表推导式_python的各种推导式(列表推导式、字典推导式、集合推导式)...

    推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的数据序列的结构体. 共有三种推导,在Python2和3中都有支持:列表(list ...

  3. python双重for循环 列表推导式_Python 列表推导式

    列表推导式(list comprehension)是利用其它列表创建新列表的一种方式.它的工作方式类似于for循环,例如: >>> [x*x for x in range(10)] ...

  4. python用列表推导式_python 列表推导式使用详解

    所谓的列表推导式,就是指的轻量级循环创建列表. 基本使用方式 # 创建一个0-10的列表 a = [x for x in range(11)] print(a) """ ...

  5. python numpy 奇数偶数行互换_python 列表推导式(经典代码)(21)

    文章首发微信公众号,微信搜索:猿说python 截止到目前为止,python基础内容已经学习了50%左右,在学习编程过程中,我们不仅要学习python语法,同时也需要学习如何把自己代码写的更美观,效率 ...

  6. Python教程:列表推导式和嵌套的列表推导式讲解

    1.列表推导式 列表推导式提供了一个更简单的创建列表的方法.常见的用法是把某种操作应用于序列或可迭代对象的每个元素上,然后使用其结果来创建列表,或者通过满足某些特定条件元素来创建子序列. 例如,假设我 ...

  7. Python基础教程:列表推导式对比For循环执行效率

    如果把1-10以内的元素追加到一个新的列表表中,如果使用for循环我们可以这么做: a = [] for i in range(1,11):a.append(i) print(a) 输出结果如下: 如 ...

  8. python教程:列表推导式对比For循环执行效率

    我们在前面的学习中都知道,如果把1-10以内的元素追加到一个新的列表表中,如果使用for循环我们可以这么做: a = [] for i in range(1,11):a.append(i) print ...

  9. 列表输出循环左移_python 列表推导式(经典代码)(21)

    文章首发微信公众号,微信搜索:猿说python 截止到目前为止,python基础内容已经学习了50%左右,在学习编程过程中,我们不仅要学习python语法,同时也需要学习如何把自己代码写的更美观,效率 ...

最新文章

  1. linux grep命令总结
  2. TP5 急速上手 语法规则
  3. 信号与线性系统分析_线性系统与采样定理
  4. 十堰市人民小学一年级在计算机学校,我上一年级啦!
  5. linux so文件支持系统,让linux支持xfs jfs reiserfs 文件系统
  6. 更改主机名后mysql无法启动_主机名变更导致MySql启动失败
  7. python教程吾爱破解_2020年最新python入门到精通教程
  8. Android Studio报错: Alternatively, to transfer the license agreements from one workstation to another
  9. JavaWeb:cookies和storage的区别
  10. 安卓系统dicom阅读器_文石BOOX发布新品poke2 color 全球首款开放系统彩色电纸书
  11. 幸运抽奖游戏系统带后台源码
  12. 发动机压缩比怎么计算公式_发动机要多大的压缩比热效率才能达到达到60%?
  13. AndroidQ SystemUI之插件化机制Plugin
  14. 【前端技术】一篇文章搞掂:JS
  15. 【Pytorch->ONNX->NCNN->NCNNfp16->vs编译】Windows NCNN部署
  16. 给WPS文档加密码的多种方法
  17. superMap Cesium(超图) ---scene open()用法
  18. Oracle 性能优化总结
  19. dnf内存教学视频教程分析讲解
  20. 实践 | Face-API实现人脸识别(附源代码)

热门文章

  1. 量化交易入门阶段——布林带的真正用法
  2. 使用Spring框架+前端技术实现简易的留言系统
  3. 岁末年初,“2018年度赛可达优秀产品奖”获奖名单揭晓了……
  4. zuk z2 android 7.0,联想ZUK Z2确定升级安卓7.0:官方曝光系统截图
  5. 暑期预习IB数学/化学/物理/经济书籍推荐
  6. 阿朱:帮助过我的那些书和人
  7. 狄克斯特拉(Dijkstra)算法求一个顶点到其余各个顶点的最短路径
  8. mvc jquery ajax方法,asp.net mvc-如何在jQuery $ .ajax()中将模型发送请求到MVC控制器方法...
  9. SAP VL09 DN凭证冲销保存增强
  10. xzp 线刷 android 10,索尼Xperia XZ刷机教程_Sony XZ强刷官方FTF系统包