注意:

1、所有的列表表达式都可以转换成生成器表达式

2、尽量让表达式简化你得操作,增加代码可读性

3、如果代码过于复杂,应该转换成普通代码

4、再代码中尽可能多使用生成器表达式。

三元运算符:简化代码

 #例
num_test1 = 10
num_test2 = 5
if num_test1 > num_test2 :
num_test3 = num_test2
else:
num_test3 = num_test1
print(num_test3)
#可以简化为
num_test3 = num_test1 if num_test1 > num_test2 else num_test2
#结果 = if 条件成立的结果 ,if条件, else if 条件不成立的结果

 列表表达式:

 #列表中的数字乘方
#[1,3,5] == [1,9,25]
new_l = []
for i in [1,3,5]:
new_l.append(i*i)
print(new_l)
#新办法
new_lis =[i * i for i in [1,3,5]]#for 前面的就是新列表里面的值
print(new_lis)
#结果必须是个列表

示例:【‘egg%d’%i for i in range(10)】

生成器表达式:把列表表达式中[ ]变成()

示例: a = (‘egg%d’%i for i in range(10))   #生成器a.__next__()

练一练:

1、【1,2,3,4,5,6,】 可以被3整除的数字 ,用列表表达式写出来

 print([ i for i in [1,2,3,4,5,6] if i % 3 == 0])
# 列表表达式里面也可以传入函数
#实现平方
def func(i):
return i*i
print([ func(i) for i in [1,2,3,4,5,6] if i % 3 == 0])

2、找出2个有e的元素。添加至新列表

 #找出2个有e的元素。添加至新列表
#Python count() 方法用于统计字符串里某个字符出现的次数。
# 可选参数为在字符串搜索的开始与结束位置。
names = [
['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']
]
result = [user for i in names for user in i if user.count('e') >= 2]
print(result)

字典推导式 :

例1:将字典key 和value对调

 #将字典key 和value对调
dic = {'a':1,'b':2}
print({dic[k]:k for k in dic })

例2:合并大小写对应value的值,将K统一小写

 dic = {'a':10,'b':34,'A':7,'z':3}
#效果 {'a':17,'b':34,'z':3}
# print({k.lower():dic.get(k.lower(),0) + dic.get(k.upper(),0)for k in dic})
#get取的值不会报错,但是会提示None ,不能相加
#加参数 0 如果有,则获取,没有那就获取默认的0

集合推导式:#和列表推导式一样不过是换了个{ } 括号 有去重功能

例1  # 计算平方,并去重 l = [-1,1,2,3,4,5] print({i * i for i in l})

匿名函数:为了解决那些功能很简单的需求而设计的一句话函数

# 这段代码
def calc(n):
return n ** n
print(calc(10))
# 换成匿名函数
calc = lambda n: n ** n
print(calc(10))
#参数可以有多个,用逗号隔开

calc = lambad n : n ** n

calc :函数名

lambad:类似  def

n: 参数

n**n :返回值

例1   def add(x,y): return x+y  把这个变成匿名函数

 def add(x,y):
return x+y
ret = lambda x,y:x+y
print(ret(10,11))

例2 现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]

 t1 = (('a'),('b'))
t2 = (('c'),('d'))
test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
print(test(t1,t2))
#先用zip拉链数据组合到一起
#然后用列表表达式

Day 7 :一句话Python(匿名函数-lambda,三元运算,列表表达式,生成器表达式)的更多相关文章

  1. python 匿名函数与三元运算

    匿名函数 匿名函数就是不需要显示式的指定函数名 首先看一行代码: def calc(x,y): return x*y print(calc(2,3)) # 换成匿名函数 calc = lambda x ...

  2. python匿名函数与三元运算

      匿名函数 匿名函数就是不需要显示式的指定函数名 首先看一行代码: def calc(x,y): return x*y print(calc(2,3)) # 换成匿名函数 calc = lambda ...

  3. python 匿名函数lambda使用

    lambda函数语法格式: lambda函数 后面参数可以有一个或多个,冒号后面是python表达式: lambda 参数1,参数2,参数3...:表达式 # 一个参数情况: a = lambda x ...

  4. 被老猿误解的Python匿名函数lambda

    在<第2.3节 Python运算符大全>老猿这样描述lambda:"上述运算符中有个lambda,这是个lambda就是用来定义一个匿名函数的.老猿认为用处不大,具体内容大家可以 ...

  5. python 匿名函数 lambda 的使用

    在python中,lambda允许用户快速定义单行函数,当然用户也可以按照典型的函数定义完成函数.lambda的目的就是简化用户定义使用函数的过程. In [6]: s = lambda x: x+1 ...

  6. python 匿名函数 lambda

    一.lambda使用语法: 关键字lambda表示匿名函数,冒号前面的x表示函数参数,冒号后面只能有一个表达式,不用写return,返回值就是该表达式的结果. >>> list(ma ...

  7. python匿名函数lambda与switch的实现

    1,lambda的语法跟es6的箭头函数差不多 >>> show=lambda x,y: x * y >>> show( 10, 20 ) 200 2,递归求阶乘 ...

  8. Python匿名函数——lambda表达式

    如果要定义的函数很简单,一个return语句就能搞定,可以使用lambda表达式来定义, lambda表达式的语法如下: lambda parameters: expression lambda表达式 ...

  9. Python匿名函数(lambda)

    result = lambda [arg1 [, arg2, .....]]:expression result:用于调用lambda表达式 [arg1 [, arg2, -]]:可选参数,用于传递参 ...

随机推荐

  1. 使用PaxScript为Delphi应用增加对脚本的支持

    通过使用PaxScript可以为Delphi应用增加对脚本的支持. PaxScript支持paxC,paxBasic,paxPascle,paxJavaScript(对ECMA-262做了扩展) 四种 ...

  2. Linux网卡驱动(4)—DM9000网卡驱动程序完全分析

    1.硬件连接 mini2440开发板上DM9000的电气连接和mach-mini2440.c文件的关系 其中片选信号AEN使用了nGCS4,所以网卡的内存区域在BANK4,也就是从地址0x200000 ...

  3. python pandas  使用列表快速创建数据 用于测试

    创建数据和行append数据 >>> df = pd.DataFrame([['AA', 1.00], ['Ks', 2.00]], columns=['name', 'age']) ...

  4. yum 快速LAMP/LNMP 安装(centos7+mysql5.7+apache+php5.6 (缺点:好多模块没有加载)

    1.安装Apache 安装centos7默认自带(Apache2.4.6)版本 yum -y install httpd 2.开启apache服务 systemctl start httpd.serv ...

  5. 剑指offer——54数组中的逆序对

    题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000 ...

  6. cdh5.47 上配置flume

    flume 配置文件 # Define a memory channel called ch1 on agent1agent1.channels.ch1.type = memoryagent1.cha ...

  7. 关于scroll实现侧边导航栏

    需求为一个简单的scroll效果,侧边选项卡跟随屏幕向下拖动变颜色的.点击侧边选项卡,跳转到相应模块. 索性上网找了一下类似的效果.附带源码地址  https://blog.csdn.net/drea ...

  8. 读书笔记一、numpy基础--创建数组

    创建ndarray   (1)使用array函数 接受一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的numpy数组. import numpy as np #将一个由数值组成列表作为 ...

  9. 使用sql对比Mysql中数据库2个表结构

    比较两个数据表的结构 SELECT column_name, max( CASE WHEN table_name = 'table1' AND table_schema = 'db1' THEN 'Y ...

  10. [转]Netty入门(最简单的Netty客户端/服务器程序)

    Java中的NIO是一种解决阻塞式IO问题的基本技术,但是NIO的编写对java程序员是有比较高的要求的.那么Netty就是一种简化操作的一个成熟的网络IO编程框架.这里简单介绍一个程序,代码是< ...