zoukankan      html  css  js  c++  java
  • Python函数进阶

    三元表达式/列表推导式/字典生成式 只是让你的代码少一些,但是逻辑没发生变化

    三元表达式

    # 三元表达式只支持双分支结构
    
    name = 'apple'
    print('red') if name == 'apple' else print('blue')
    
    

    red

    列表推导式

    lt = [i ** 2 for i in range(10)]
    print(lt)
    

    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

    字典生成式

    # 字典生成式一般与zip连用
     
    z = zip(['a','b','c','d'],[1,2,3,4]) #压缩方法,Python解释器的内置方法
    dic = {k:v**2 for k,v in z}
    print(dic)
    

    {'a': 1, 'b': 4, 'c': 9, 'd': 16

    生成器

    #生成器:自定义迭代器,生成器就是迭代器(自己造出来的)
    
    #yield关键字的三个特性
    
    #1.yield可以把函数变成生成器(自定制的迭代器对象,具有__iter__和__next__方法)
    #2.yield可以停止函数,再下一次next再次运行yield下面的代码
    #3.有n个yield生成器就有n个元素,就可以next n次,第n+1次next会报错
    
    
    # 自定义一个range()函数
    def range(x,y,z): #普通版
    	while x < y:
            yield x
    		x += z
            
    def range(*args, step = 1): #通用版
    	args = list(args)
        if len(args) == 1:
        	count = 0
            while count < args[0]:
                yield count
                count += step
         elif len(args) == 2:
         	while args[0] < args[1]:
                yield args[0]
                args[0] += step     
           
    
    

    匿名函数

    #匿名函数需要关键字 lambda
    
    #lambda 参数:<代码块>
    f = lambda x: x+1
    res = f(1)
    print(res) # 2
    
    # 匿名函数一般不单独使用,和filter()/map()/sorted()/列表sort()内置方法联用
    salary_dict = {
        'nick': 3000,
        'jason': 100000,
        'tank': 5000,
        'sean': 2000
    }
    salary_list = list(salary_dict.items())
    new_salary_list = sorted(salary_list, key=lambda i: i[1], reverse=True)  # 重新创建一个新的列表进行排序
    print(new_salary_list)
    
    #[('jason', 100000), ('tank', 5000), ('nick', 3000), ('sean', 2000)]
    
  • 相关阅读:
    java---随机点名
    java实现窗体JFrame加载动态图片
    微信小程序--登陆页面
    java基础--随机数 猜数字游戏
    jQuery表单验证
    js获取Id,标签,类的几种选择器封装
    轮播图
    关于mysql安全
    PHP5.4开启zend opcache缓存
    ccs3中icon转换为字体的方法
  • 原文地址:https://www.cnblogs.com/michealjy/p/11348551.html
Copyright © 2011-2022 走看看