Day 7 :一句话Python(匿名函数-lambda,三元运算,列表表达式,生成器表达式)

注意:

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

2、经量让标傲世简化你得操作,增加代码可读性

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

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

三元运算符:简化代码

 1 #
 2 num_test1 = 10
 3 num_test2 = 5
 4 if num_test1 > num_test2 :
 5     num_test3 = num_test2
 6 else:
 7     num_test3 = num_test1
 8 print(num_test3)
 9 #可以简化为
10 num_test3 = num_test1 if num_test1 > num_test2 else num_test2
11 #结果 = if 条件成立的结果 ,if条件, else if 条件不成立的结果

 列表表达式:

1 #列表中的数字乘方
2 #[1,3,5] == [1,9,25]
3 new_l = []
4 for i in [1,3,5]:
5     new_l.append(i*i)
6 print(new_l)
7 #新办法
8 new_lis =[i * i for i in [1,3,5]]#for 前面的就是新列表里面的值
9 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整除的数字 ,用列表表达式写出来

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

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

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

字典推导式 :

例1:将字典key 和value对调

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

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

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

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

例1 1 # 计算平方,并去重 2 l = [-1,1,2,3,4,5] 3 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  把这个变成匿名函数

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

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

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

 

转载于:https://www.cnblogs.com/sunjinchao/p/10886022.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值