一、列表生成式

1、列表生成式就是python内置的一种用来生成list的生成式。

比如下面这个例子:

l=[]

for i in range(10)

  list.append(i)

生成一个列表要用循环语句此次添加元素。如果我们用列表生成式,一句话即可:

l=[i for i in range(10)] #这个生成式的操作是,for循环执行后得到的i,返回给前面的i。这样执行结束后,l=[0,1,2,3,4,5,6,7,8,9]

l1=[str(num).zfill(2) for n0um in l]# for循环遍历l,得到的值返回给前面的num,然后做操作str(num).zfill(2).用0补充到2位。最终结果l1=[00,01,02,03,04,05,06,07,08,09]

2、如果生成式用()括起来,最终结果就是不是一个list,而是一个生成器

l2 = ( i  for i in range(1,101,2) )  #生成100以内的奇数 #  如果print(l2)结果会是 <generator object <genexpr> at 0x02C88E10>
for j in l2: #l2是一个生成器,可以循环读出生成器的数据
print(j)

生成式和生成器的区别:

生成器比list要节省内存,它是每次循环的时候,会根据规则计算一个元素,放到内存里面。每次只占用一个空间,用一个生成一个。但是效率低
list它是把所有的元素都放在内存里面的,占用空间多。但是效率高

3、三元表达式
   三元表达式也是一行写出。用if--else。如果if条件成立,则执行if前的语句,否则执行else语句

举例:

a=1

b=2

c= a if a>b else b  #如果a>b,则执行if前的a,也就是c=a.。否则执行else也就是c=b

4、匿名函数lambda

匿名函数
lambda x: x+1 #冒号后面的是函数体,也是函数的处理逻辑,冒号前面的返回值

举例:

d = {'a':8,'b':2,'c':3}#定义一个字典

res = sorted(d.items(),key=lambda x:x[1]) #对字典进行排序。先取出字典的所有元组d.items().然后根据关键字排序。lambda x:x[1]就表示先取x[1],在d.items()获取到的list中,x[1]也就是字典中的value.然后将x[1]传给x,最终d.items根据value排序
结果就是:[('b', 2), ('c', 3), ('a', 8)]

python:列表生成式和三元表达式、匿名函数的更多相关文章

  1. Python学习之==>内置函数、列表生成式、三元表达式

    一.内置函数 所谓内置函数就是Python自带的函数 print(all([0,2,3,4])) #判断可迭代的对象里面的值是否都为真 print(any([0,1,2,3,4])) #判断可迭代的对 ...

  2. Python 非空即真、列表生成式、三元表达式 day3

    一.非空即真: Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false 布尔型,False表示False,其他为True 整数和浮点数,0表示False,其他为 ...

  3. Day13有参装饰器,三元表达式,匿名函数

    多个装饰器: 加载顺序:由下而上 执行顺序:由上而下 有参装饰器: 闭包,给函数传参的一种方法 当装饰器内需要参数时,可以采用闭包形式给其传参,第三层函数接收完参数时,就变为无参装饰器 三元表达式: ...

  4. python预课03 三元表达式示例,函数定义示例,七段彩码管绘制示例

    三元表达式 s = '不下雨' if s == '下雨': print('带伞') if s == '不下雨': print('不带伞') #等效与以下语句 print('带伞' if s == '下 ...

  5. python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)

    1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退. 迭代器有两个基本方法:iter ,nex ...

  6. CSIC_716_20191114【生成器、匿名函数、内置函数、三元表达式、列表生成式、生成器表达式】

    生成器: 函数与yield连用,凡是函数中有yield的,调用该函数的时候均不会立即执行,而是会返回一个生成器. 生成器本质上是一个迭代器,需要通过    [生成器.__next__()]或者[nex ...

  7. python 之 列表生成式、生成器表达式、模块导入

    5.16 列表生成式 l=[]for i in range(100):    l.append('egg%s' %i)print(l)​l=['egg%s' %i for i in range(100 ...

  8. Python中的列表生成式和多层表达式

    Python中的列表生成式和多层表达式 如何生成[1x1, 2x2, 3x3, ..., 10x10]的列表? L=[]; ,): L.append(x*x) print L print (" ...

  9. [二] java8 函数式接口详解 函数接口详解 lambda表达式 匿名函数 方法引用使用含义 函数式接口实例 如何定义函数式接口

    函数式接口详细定义 package java.lang; import java.lang.annotation.*; /** * An informative annotation type use ...

随机推荐

  1. Java 字符流

    字符编码表:其实就是生活中字符和计算机二进制的对应关系表. 1.ascii: 一个字节中的7位就可以表示.对应的字节都是正数.0-xxxxxxx 2.iso-8859-1:拉丁码表 latin,用了一 ...

  2. C#LeetCode刷题之#258-各位相加(Add Digits)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3860 访问. 给定一个非负整数 num,反复将各个位上的数字相加 ...

  3. JavaScript 循环数组的时候调用方法中包含Promise的时候如何做到串行

    forEach是不能阻塞的, 默认[并行]方式 const list = [1, 2, 3] const square = num => { return new Promise((resolv ...

  4. 分享一个Flink checkpoint失败的问题和解决办法

    本文来自: PerfMa技术社区 PerfMa(笨马网络)官网 接触Flink一段时间了,遇到了一些问题,其中有一个checkpoint失败导致作业重启的问题,遇到了很多次,重启之后一般也能恢复正常, ...

  5. 【python接口自动化】- 使用requests库发送http请求

    前言:什么是Requests ?Requests 是⽤Python语⾔编写,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库.它⽐ urllib 更加⽅便,可以节约我们⼤ ...

  6. Redis设计与实现——多机数据库的实现

    复制 旧版Redis的复制功能分为同步(sync)和命令传播两个操作. sync:是一个非常耗费资源的操作                                           命令传播 ...

  7. apache+djnago+websocket 部署配置

    部署Apache服务器 1.apache服务的安装这里不做赘述,因为网上一大堆. 链接:https://blog.csdn.net/qq_24394093/article/details/905501 ...

  8. MS建模mmt

    一.流程:1.定义好每个原子力场类型:Edit Sets(分组) 2.加H(一般是仅与Al-O八面体中的Al相连的O原子).给H分组 3.“make P1”.校核化学式(正确与否) 4.扩成超晶胞(N ...

  9. Qt 绘图(QBitmap,QPixmap,QImage,QPicture)

    QPainter绘图绘图设备(QPixmap,QImage,QBitmap,QPicture) 重写绘图事件,虚函数 如果窗口绘图,必须放在绘图事件里实现 绘图事件内部自动调用,窗口需要重绘的时候,状 ...

  10. 手写@Service、@Autowired、@Transactional注解,实现spring ioc和spring事务

    自定义@Service注解 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface Custom ...