• Python之一行代码


    一、三元表达式

    # 三元表达式只支持双分支结构
    
    x,y = 10,20
    print(x if x>5 else y)
    # 满足if后面的条件返回x,否则返回y
    

    二、列表推导式

    # 创建0~9的列表
    
    # 1.for循环方式
    lt = []
    for i in range(10):
        lt.append(i)
    print(lt)
    
    # 2.列表推导式
    lt = [i for i in range(10)]
    print(lt)
    

    三、字典生成式

    # 字典生成式一般与zip(拉链函数-->列表里面包了元组)连用
    z = zip(['a', 'b', 'c', 'd'], [1, 2, 3, 4])  # 压缩方法,Python解释器的内置方法
    
    # 字典生成式
    dic = {k: v for k, v in z}
    print(dic)
    

    四、生成器

    生成器:自定义迭代器,生成器就是迭代器(自己造出来的)

    def func():
        yield 123  # yield会使函数func()变成生成器对象,因此它具有__iter__方法
        print(456)  # yield会停止函数,当运行运行下一次next才会继续运行下面的代码
        yield 789  # 一个yield对应一个next
    
    f = func()  # 生成器
    print(f)  # <generator object func at 0x000001F0E44237D8>
    f_iter = f.__iter__()
    print(f_iter.__next__())
    print(f_iter.__next__())
    print(f_iter.__next__())
    
    # yield的三个特性
    # 1.yield可以把函数变成生成器(自定制的迭代器对象,具有__iter__和__next__方法)
    # 2.yield可以停止函数,在下一次next时再运行yield下面的代码
    # 3.有n个yield生成器就有n个元素,就可以next n次,第n+1次next会报错
    
    # return的特性
    # 1.返回值
    # 2.终止函数
    
    # 用生成器自定义range函数
    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
        elif len(args) == 3:
            step = args[2]
            while args[0] < args[1]:
                yield args[0]
                args[0] += step
    

    五、匿名函数

    # def 函数名 ---> 有名函数
    # 匿名函数 ---> 没有名字
    
    # 匿名函数一般不单独使用,和filter()/map()/sorted()/列表的sort()内置方法联用
    salary_dict = {
        'nick': 3000,
        'jason': 100000,
        'tank': 5000,
        'sean': 2000
    }
    salary_list = list(salary_dict.items())
    print(salary_list)  # [('nick', 3000), ('jason', 100000), ('tank', 5000), ('sean', 2000)]
    
    salary_list.sort(key=lambda i: i[1])  # 内置方法是对原值排序
    
  • 相关阅读:
    [编]在Web站点中创建和使用Rss源
    Command 模式 Step by Step
    正则表达式 教程
    (转)mysql处理高并发,防止库存超卖
    【转】Golang- import 导入包的几种方式:点,别名与下划线
    win10 c++ build tools的安装
    Reporting Services VS designer 的一个 bug
    使用 AppDomain 让不支持线程安全的代码轻松支持线程安全
    应该怎样设计和开发软件
    Razor 也可说是一个模板引擎,用不着学习 T4 了
  • 原文地址:https://www.cnblogs.com/17vv/p/11347816.html
Copyright © 2020-2023  润新知