zoukankan      html  css  js  c++  java
  • 生成器-内置函数1

    一、生成器

    生成器?:python,生成器与迭代器看成一种。生成器的本质就是迭代器。

    唯一的区别:生成器是我们自己用python代码构建的数据结构。迭代器都是提供的,或者转化得来的。

    获取生成器的三种方式:

    1、生成器函数

    2、生成器表达式

    3、python内部提供的一些。

    生成器函数。

    yield:

    只要函数中有yield那么它就是生成器函数。

    生成器函数中可以存在多个yield,yield不会结束生成器函数,一个yield对应一个next

    正常情况下:

    def func():
        print('111')
        print('222')
        return 3333
    ​
    ret = func()
    print(ret)
    # 输出
    111
    222
    3333

    生成器函数:

    def func():
        print('111')
        print('222')
        yield 3333
        yield 4444
        yield 5555
    ​
    ret = func()
    print(next(ret))        # 一个yield对应一个next
    print(next(ret))
    # 输出
    111
    222
    3333
    4444

    yield return

    return:函数只存在一个return结束函数,并且给函数的执行者返回值。

    yield:只要函数中有yield那么它就是生成器而不是函数了。

    生成器函数中可以存在多个yield,yield不会结束生成器函数,一个yield对应一个next

    yield from

    将列表变成了迭代器返回。

    def func():
        ll = [1, 2, 3, 4, 5, 6]
        yield from ll
    ​
    ret = func()
    print(next(ret))
    print(next(ret))
    print(next(ret))
    # 输出:
    1
    2
    3

    二、列表推导式

    用一行代码构建一个比较复杂有规律的列表。

    循环模式:[变量(加工后的变量) for 变量 in iterable]

    ll = [i for i in range(100)]
    print(ll)
    # 输出
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9......99]

    多层循环:留下name里面有两个e的名字。

    names = [['Tom', 'Villy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
             ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
    ​
    ll = [n.upper() for i in names for n in i if n.count('e') >= 2 ]
    print(ll)
    # 输出
    ['JEFFERSON', 'WESLEY', 'STEVEN', 'JENNIFER']

    筛选模式:[变量(加工后的变量) for 变量 in iterable if 条件]

    ll = [i for i in range(100) if i % 2 == 0 ]
    print(ll)
    # 输出
    [0, 2, 4, 6, 8, 10, 12, 14, 16......98]

    三、生成器表达式

    与列表推导式的写法一模一样,也有筛选模式,循环模式,多层循环结构。

    就是把列表推导式的 [ ] 括号换成()

    ll = (i for i in range(100) if i % 2 == 0 )
    ​
    print(next(ll))
    print(next(ll))
    print(next(ll))
    # 输出
    0
    2
    4

    字典推导式。(方便)

    l1 = ['jay', 'jj', 'meet']
    l2 = ['周杰伦', '凌俊杰', '小宝']
    ​
    dic = {l2[i]:l1[i] for i in range(3)}
    ​
    print(dic)
    # 输出
    {'周杰伦': 'jay', '凌俊杰': 'jj', '小宝': 'meet'}

    四、内置函数(1)

    python提供了68个内置函数。

    大部分了解即可。

    eval:——剥去字符串的外衣运算里面的代码,有返回值。(危险别用,特别是有网络)

    exec:——与eval几乎一样,代码流

    hash:——获取一个对象的哈希值(和哈希算法)

    help:——获取函数或模块的使用说明。

    callable:——检查一个对象是否可调用。

    int:——将一个字符串或数字转换成整型。取整

    float:——函数用于将整数和字符串转换成浮点数。

    complex:——复数

    bin:——将十进制转化成二进制

    cot:——十进制转化成八进制

    hex:——将十进制转化成十六进制

    divmod:——除数与被除数的结果(商几余几)

    round:——保留浮点数的小数的位数

    pow:——求x的y次幂(x**y)

    bytes:——用于不同的编码转换

    ord:——输入字符找该字符编码的位置(是Ascii就找ASCII不是就找Uicode)

    chr:——输入位置数字找出其对应的字符 (UIcode)

    repr:——返回一个对象的string形式(原形毕露)

    all:——可迭代对象中,全都是True才是True

    any:——可迭代对象中,有一个True就是True

    学习之旅
  • 相关阅读:
    go函数
    Linux 查看磁盘容量、查找大文件、查找大目录
    五分钟理解一致性哈希算法(consistent hashing)
    使用Java实现三个线程交替打印0-74
    Python实现IOC控制反转
    Wannafly挑战赛5 A珂朵莉与宇宙 前缀和+枚举平方数
    Yandex Big Data Essentials Week1 Scaling Distributed File System
    Yandex Big Data Essentials Week1 Unix Command Line Interface Processes managing
    Yandex Big Data Essentials Week1 Unix Command Line Interface File Content exploration
    Yandex Big Data Essentials Week1 Unix Command Line Interface File System exploration
  • 原文地址:https://www.cnblogs.com/XiaoYang-sir/p/14675601.html
Copyright © 2011-2022 走看看