zoukankan      html  css  js  c++  java
  • python语法基础(6)_生成器

    生成器

    生成器本质就是一个迭代器

    生成器与迭代器区别
    迭代器是python自带的
    生成器是程序猿自己写的

    yield 会记录执行位置
    在函数中将return改写成yield就是一个生成器
    return和yield都是返回的值
    return可以写多个,但是执行一次,yield可以写多个,也可以返回多个
    一个__next__()对应一个yield
    生成器可以使用for循环遍历
    yield from__可以将迭代元素逐个返回
    yield可以将for循环和while 循环进行临时暂停(函数内部)

    生成器应用场景

    #例子如下
    def func():
        for i in range(10):
            yield i
    A=func()
    for i in range(2,6):
        print(next(A))
    

    生成器表达式与推导式

    列表推导式分为两种模式:
    ​1.循环模式:[变量(加工的变量) for 变量 in iterable]
    ​2.筛选模式: [变量(加工的变量) for 变量 in iterable if 条件]

    #例子如下将这个列表中大于3的元素留下来。
    l1 = [4, 3, 2, 6, 5, 5, 7, 8] 
    print([i for i in l1 if i > 3])
    #结果如下
    [4, 6, 5, 5, 7, 8]
    

    生成器表达式
    生成器表达式和列表推导式的语法上一模一样,
    只是把[]换成()就行了。
    比如将十以内所有数的平方放到一个生成器表达式中
    生成器表达式也可以进行筛选

    生成器

    gen = (i**2 for i in range(10))
    print(gen)
    # 结果: <generator object <genexpr> at 0x0000026046CAEBF8>
    

    生成器表达式和列表推导式的区别:

    列表推导式比较耗内存,所有数据一次性加载到内存。
    而生成器表达式遵循迭代器协议,逐个产生元素。
    得到的值不一样,列表推导式得到的是一个列表.生成器表达式获取的是一个生成器
    列表推导式一目了然,生成器表达式只是一个内存地址。

    列表推导式

    l1 = [4, 3, 2, 6, 5, 5, 7, 8] 
    print([i for i in l1 if i > 3])
    #结果如下
    [4, 6, 5, 5, 7, 8]
    

    字典推导式

    lst1 = ['jay','jj','meet']
    lst2 = ['周杰伦','林俊杰','郭宝元']
    dic = {lst1[i]:lst2[i] for i in range(len(lst1))}
    print(dic)
    

    集合推导式

    lst = [1,2,3,-1,-3,-7,9]
    s = {abs(i) for i in lst}
    print(s)
    

    内置函数

    all()
    判断可迭代参数是否含有 0、空、None、False 的参数
    如果不含有以上条件返回True

    注意:空元组、空列表返回值为True,这里要特别注意。

    例子如下

    A=(1,2,3,())
    print(all(A))
    #结果元祖还有空元素
    False
    

    any()
    any() 函数用于判断给定的可迭代参数
    是否全部为 False,则返回 False,
    如果有一个为 True,则返回 True。
    元素除了是 0、空、FALSE 外都算 TRUE。
    例子如下

    print(any((0, '', False)))
    #结果 都是空的不可迭代
    False
    

    bytes()
    bytes 函数返回一个新的 bytes 对象,
    该对象是一个 0 <= x < 256 区间内的整数不可变序列
    它是 bytearray 的不可变版本
    用于字符编码
    例子如下

    A="SkyRabbit"
    b=bytes(A.encode('gbk'))
    print(b)
    #结果
    b'SkyRabbit'
    

    callable()
    检查一个对象是否是可调用的
    例子如下

    def add(a, b):
        return a + b
    print(callable(add))
    #结果如下
    True
    

    chr()
    chr() 用一个整数作参数,返回一个对应的字符
    例子如下

    A=chr(97)
    print(A)
    #结果如下
    a
    

    complex()
    函数用于创建一个值为
    real + imag * j 的复数或者转化一个字符串或数为复数。
    如果第一个参数为字符串,则不需要指定第二个参数。
    例子如下

    A=complex(1, 2)
    print(A)
    #结果如下
    (1+2j)
    

    divmod()
    返回一个包含商和余数的元组(a // b, a % b)。
    例子如下

    A=divmod(6, 2)
    print(A)
    #结果如下
    (3, 0)
    

    eval()
    函数用来执行一个字符串表达式,并返回表达式的值
    例子如下

    A=2
    A=eval("6*A")
    print(A)
    #结果如下
    12
    

    exec()
    exec 执行储存在字符串或文件中的 Python 语句
    例子如下

    A=exec('print("Hello World")')
    #结果如下
    Hello World
    

    format()
    格式占位符
    例子如下

    A="{} {}".format("hello", "world")
    print(A)
    #结果如下
    Hello World
    

    frozenset()
    返回一个冻结的集合,
    冻结后集合不能再添加或删除任何元素。

    a = frozenset(range(10))
    print(a)
    #不可以被删除的
    

    globals()
    全局定义

    hash()
    用于获取取一个对象(字符串或者数值等)的哈希值。

    help()
    函数用于查看函数或模块用途的详细说明。

    id()
    函数用于获取对象的内存地址。

    input()
    获取用户输入

    int()
    函数用于将一个字符串或数字转换为整型。

    iter()
    函数用来生成迭代器。

    #例子如下
    lst = [1, 2, 3]
    for i in iter(lst):
        print(i)
    #结果如下
    1
    2
    3
    

    locals()
    函数会以字典类型返回当前位置的全部局部变量。
    例子如下

    def runoob(arg):    # 两个局部变量:arg、z
        z = 1
        print (locals())
    runoob(5)
    #结果如下
    {'z': 1, 'arg': 5}
    

    next()
    next() 返回迭代器的下一个项目。

    oct()
    函数将一个整数转换成8进制字符串。
    例子如下

    A=20
    B=oct(A)
    print(B)
    #结果如下
    0o24
    

    ord()
    ord() 函数是 chr() 函数ASCII 字符串的配对函数
    例子如下

    A='A'
    B=ord(A)
    print(B)
    #结果如下
    65#意思就是ASCL码表的65位
    

    pow()
    方法返回 xy(x的y次方) 的值。
    例子如下

    B=pow(2,3)
    print(B)
    #结果如下
    8
    

    repr()
    函数将对象转化为供解释器读取的形式
    例子如下

    dict = {'runoob': 'runoob.com', 'google': 'google.com'};
    B=repr(dict)
    print(B)
    #结果如下
    {'runoob': 'runoob.com', 'google': 'google.com'}
    

    round()
    方法返回浮点数x的四舍五入值。
    例子如下

    B=round(70.23456)
    print(B)
    #结果如下
    70
    

    print(abs())#绝对值 返回都是正数
    例子如下

    lst =[1,2,3,-5]
    print([abs(i)for i in lst])
    

    enumerate(" 可迭代对象","序号的启始值")#_枚举 默认开始值是0
    例子如下

    lst =[5,2,8,-5]new_list=[]for i in  enumerate(lst):    new_list.append(i)print(new_list)
    

    max()#求最大值
    例子如下

    print(max([5,8,9,11]))
    

    min()#求最小值
    例子如下

    print(min([5,8,9,11]))
    

    sum()#求总和

    print(sum({2,6,4}))
    

    python3
    可迭代对象

     g=range(0,10)
    g = range(0, 10)
    g.__iter__()
    

    python2
    是个列表
    可迭代对象

     g=range(0,10)
    g = range(0, 10)
    g.__iter__()
    

    sep=""
    多个元素链接符号
    例子如下

    print(1,5,8,sep=" *")
    

    end=""
    结尾的符号
    例子如下

     print(1,5,8,end=" *")
    

    list()方法
    例子如下

    print(list("ABCDEFG"))
    结果如下
    #['A', 'B', 'C', 'D', 'E', 'F', 'G']
    

    zip()#拉链 按照最少的进行合并
    例子如下

    lister=[1,3,5,7]
    lister2=['a','b','c']
    lister3=['alex','ewr','你好']
    print(list(zip(lister,lister2,lister3)))
    #结果如下
    [(1, 'a', 'alex'), (3, 'b', 'ewr'), (5, 'c', '你好')]
    

    dir()#查看当前函数的方法

    format 进制类型转换
    例子如下

    print(format(5,"^20"))
    print(format(1,"08b"))
    #结果如下
    #         5        
    #00000001
    
    

    filter
    例子如下

    lister=[1,3,5,7]
    print(list(filter(lambda x:x>3,lister)))
    #结果如下
    [5, 7]
    

    map()#对象反射
    对可迭代对象每个元素进行加工
    例子如下

    print(list(map(lambda x:x+1,[1,5,8,9])))
    #结果如下
    [2, 6, 9, 10]
    
  • 相关阅读:
    Python小白学习之路(十)—【函数】【函数返回值】【函数参数】
    Flex布局(一)
    APICloud框架—db数据库模块
    碰到的一些面试问题
    webpack最基本的用法
    基本排序算法
    RequireJS基础知识
    CSS选择器
    把sublime添加到右键快捷菜单
    github的使用与问题
  • 原文地址:https://www.cnblogs.com/SkyRabbit/p/11214251.html
Copyright © 2011-2022 走看看