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

    学习之旅
  • 相关阅读:
    五子棋
    纯ASP实现的“无刷新”聊天室
    砸砖块
    ASP.NET中批量插入数据
    判断一个dataset的数据是否包含另一个dataset的数据
    使用DB2时的一些问题
    RTOS,什么是硬实时和软实时
    异或运算^的一个作用
    vc 重启和关机
    About DLL
  • 原文地址:https://www.cnblogs.com/XiaoYang-sir/p/14675601.html
Copyright © 2011-2022 走看看