• 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 #然后用列表表达式
  • 相关阅读:
    字节跳动2020年九月笔试题-爬楼梯(不能连续爬两个两步)
    c/c++经典面试题-part1
    C++单例模式之一见钟情
    多线程同步的四种方式(史上最详细+用例)
    c++多态之动态绑定
    Redis从入门到入坑
    编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串 是由同一字符组成的。
    面试之进制转换函数
    c++编程题之空调遥控器
    static 和 const关键字的作用
  • 原文地址:https://www.cnblogs.com/sunjinchao/p/10886022.html
Copyright © 2020-2023  润新知