zoukankan      html  css  js  c++  java
  • 三元表达式&列表生成式&生成器表达式&匿名函数&内置函数

    三元表达式

    三元表达式是python为我们提供的一种简化代码

    语法:res = 条件成立时返回的值 if 条件 else 条件不成立时返回的值

    比较用法;
    1.复杂的小白方式
    def max(x,y):
    if x>y:
           return x
       else:
           return y
    res = max(1,2)
    print(res)
    2.三元精英级表达式
    x=1
    y=2
    res = x if x>y else y
    print(res)

     

    列表生成式

    列表生成式是python为我们提供的一种简化代码的解决方案,用来快速生成列表

    可以一行实现生成列表:

    语法:list= [取出的每一个值/任意值 for 可迭代对象中取出的每一个值 in 可迭代对象]

    [line for line in range(1,6)]

    优点:可以依赖与索引取值,取值方便

    缺点:浪费资源

    普通人生成列表:
    new_liat = []
    for line in range(1,101):
       new_list.append(line)
    print(new_list)
    列表生成式生成列表:
    list = ['鸡蛋%s' %i for i in range(10)]

    生成器表达式

    创建一个生成器对象有两种方式,一种是调用yield关键字函数,另一种就是生成器表达式,与列表生成式的语法一样,只需将[]换成()即

    (line for line in range(1,6))

    优点:节省资源

    缺点:取值不方便

    生成一个有100个值的生成器
    g = (line for line in range(1,101))
    print(g)
    for i in g:
      n.append(i)
    print(n)

    匿名函数

    没有名字的函数:lambda: 左边是参数,右边是返回值

    lamdba :

    正常函数调用是 函数名 + ()

    匿名函数需要一次性使用,匿名函数单独使用毫无意义,必须配合内置函数一起使用才有意义

    res = lambda x,y,z:x+y+z
    print(res)
    等同
    def func(x,y,z):
       return x + y +z
    等同
    y,z:x+y+z
    res = func(1,2,3)

    内置函数

    python中内部提供的内置方法

    max()、min、sorted、map、filter

    tomsalaries={'siry':3000,'tom':700,'lili':10000,'jack':2000}
    print(max(salaries))#按名字排序最大的那个人
    print(max(salaries,key=lambda k:salaries[k]))#工资最高的那个人
    print(min(salaries)) #按名字排序最小的那个人
    print(min(salaries,key=lambda k:salaries[k])) #按工资排序工资最少的那个人

    排序:

     

     

     

     

    sorted:从小到大排序默认升序,reverse:反转,默认是flase

    print(sorted(salaries,key=lambda k:salaries[k],reverse=True))

    map:映射,将可迭代对象中的每一个值进行修改,然后映射一个map对象中,可以将map对象转成元祖或列表(只能转一次)

    name_list = ['赵帅兵','胡晨阳','高留柱','刘浩']
    map_name = map(lambda name:name +'白马会所的少爷' if name != '刘浩' else name +'白马会所老板',name_list)
    print(map_name)
    # print(list(map_name)) #相当于从迭代器中取值只能取一次故转换操作也只能转一次
    print(tuple(map_name))

    reduce:每次从可迭代对象中获取两个值进行合并

    form functools import reduce

    初始值:执行reduce函数时,都是从初始值开始合并,初始值默认为0

    reduce(lamdba x,y:x+y,rangge(1,101),0)

    计算1-100的和基础方式

    init  = 0
    for line in range(1, 101):
       init += line
    print(init)  # 5050

    filter:过滤

    name_list = ['胡晨阳_DSB','高留柱_DSB','赵帅兵_DSB','刘浩']
    new_name = filter(lambda name:name.endswith('_DSB'),name_list)
    print(new_name)
    print(list(new_name))

     

     

     

     

     

     

  • 相关阅读:
    Android-IntentFilter
    Activity-Flag标志位
    设计模式杂谈
    Android-语言国际化
    Android 常见SD卡操作
    Android
    nginx,wsgi,django的关系
    mac安装python-mysql
    mac mysql命令行
    地址空间 32位和64位
  • 原文地址:https://www.cnblogs.com/cyfdtz/p/11892284.html
Copyright © 2011-2022 走看看