zoukankan      html  css  js  c++  java
  • Day 12 生成器,推导式,内置函数一

    迭代器:python中内置的一种节省的工具
    生成器的本质就是一个迭代器
    迭代器和生成器区别:一个是python自带的,一个是自己写的

    写一个生成器:
    def func():
    print(123)
    return '你好'
    func()

    将return编程yield就是一个生成器
    def func():
    if 2:
    yield '你好'
    if 1:
    yield '我好'
    if 3:
    yield '大家好'
    g = func()#产生一个生成器
    print(g.next())
    print(g.next())
    print(g.next())

    for i in g:
    print(i)

    def foo():
    for i in range(10):
    pass
    yield i
    count = 1
    while True:
    yield count
    count += 1
    g = foo()

    for i in g:
    print(i)

    print(g.next())
    print(g.next())

    send()自己了解

    坑--会产生新的生成器
    print(foo().next())
    print(foo().next())
    解决
    g = foo()
    print(next(g))
    python2 中没有__next__

    g.iter()
    g.next()

    在函数中将return改写乘yield就是生成器
    yield和return 也是返回
    yeild会记录执行位置
    return可以写多个,但是只执行一次
    一个__next__对应一个yield
    生成器可以使用for循环获取值
    yield from -- 将可迭代对象元素逐个返回
    send() 了解
    在函数的内部,yield 能将for循环和while循环临时停止

    生成器应用场景:
    def func():
    lst = []
    for i in range(100):
    lst.append(i)
    return lst
    print(func())

    def func():
    for i in range(100):
    yield i
    g = func()
    for i in range(2):
    print(next(g))

    def func():
    lst = ['牛羊配','老奶奶花生米','卫龙','虾扯蛋','米老头','老干妈']
    for i in lst:
    yield i
    g = func()
    print(next(g))

    def func():
    lst = ['牛羊配','老奶奶花生米','卫龙','虾扯蛋','米老头','老干妈']
    yield from lst
    g = func()

    for i in g:
    print(i)

    推导式
    lst = []
    for i in range(20):
    lst.append(i)
    print(i)

    list推导式
    print([i for i in range(20)])

    循环推导式
    [变量 for i in range(20) ]

    筛选模式
    lst = []
    for i in range(20):
    if i % 2 == 0:
    lst.append(i)
    print(lst)

    print([i for i in range(20) if i % 2 == 0])
    [变量(加工后的变量) for循环 加工方式]

    print([i for i in range(50) if i % 2 == 1])
    print([i for i in range(1,50,2)])j

    生成器表达式
    循环模式
    g = (i for i in range(20))
    print(next(g))
    print(next(g))
    print(next(g))

    筛选模式
    g = (i for i in range(50) if i % 2 == 1)
    for i in g:
    print(i)

    字典推导式(了解)
    print({i:i+1 for i in range(20)})
    print({i:i+1 for i in range(20) if i % 2 == 1})
    {键:值,for循环 加工条件}

    集合推导式
    print({i for i in range(20) if i % 2 == 1})

    list
    [变量(加工后的变量) for循环]
    [变量(加工后的变量) for循环 加工条件]

    生成器表达式
    (变量(加工后的变量) for循环)
    (变量(加工后的变量) for循环 加工条件)

    字典推导式:
    {键:值 for循环 加工条件}

    集合推导式:
    {变量(加工后的变量) for循环 加工条件}

    内置函数模块一(不常用)
    s = """
    for i in range(10)
    print(i)
    """
    print(exec(s))

    s1 = """
    for i in range(10)
    print(123)
    func()
    """
    print(exal(s))
    print(exec(s1))

    print(hash('12')) 哈希

    print(help(list)) 帮助查看:打印源码

    def func():
    pass
    print(callable()) 判断是否可调用,返回的是bool

    print(float(2)) #浮点数

    print(complex(56)) #复数

    print(bin())十进制转二进制

    print(oct(15)) #二进制转八进制
    print(hex(15)) #二进制转十六进制

    print(divmod(5,2)) 取商取余

    print(round(5.3234,2)) 四舍五入---默认整数,可指定小数位数

    print(pow(2,3)) 幂函数
    print(pow(2,3,4))

    s= 'alex'
    print(bytes(s.encode(s)))

    print(ord('你')) # 当前编码 只能一个字一个字找.AECII
    print(chr(20320)) 通过码位找字

    s ='C:u3000'
    print(repr(s)) 是什么就打什么

    print('C:u3000你好')

    lst = [1,2,3,4,5,0]
    print(all(lst)) 判断元素是否都为真 相似and
    print(any(lst)) 判断元素中是否有真 相似or

    name = 1
    def func():
    print(123)
    print(globals()) #查看全局空间的变量
    print(locals()) #查看当前空间的变量

    今日总结
    1.生成器
    定义一个生成器
    基于函数
    函数题中存在yield就是一个生成器
    函数名()就是产生一个生成器
    生成器的本质就是一个迭代器
    生成器和迭代器的区别:
    迭代器是python自带的
    生成器是程序员写的
    生成器:
    节省空间---惰性机制
    不能逆行
    一次性
    一个next对应一个yield
    yield能够进行返回内容,还能返回多个参数
    yield能够零食停止循环
    yield能够记录窒执行位置

    yirld from --将一个可迭代对象的元素逐个返回

    2.推导式
    list:[变量(加工后的变量)for循环 加工条件]
    dict:{键:值 for循环 加工条件}
    set:{变量(加工后的变量)for循环 加工条件}
    生成器表达式:(变量(加工后的变量)for循环 加工条件)

    1.不同循环推导
    2.筛选推导

    推导式测试
    li = [i*i for i in range(1,11)]
    print(li)

    li = [i*i for i in range(1,20) if i % 2 == 0]
    print(li)

    1-24期添加到列表中
    li = [f"python{i}" for i in range(1,25)]
    print(li)

    把列表中大于3的元素留下来
    lst = [123,4,22,512,1,4,1,2,3,1,2,]
    print([i for i in lst if i > 3])

    3.内置函数一
    """
    all() any() bytes()
    callable()
    chr() complex()
    divmod() eval()
    exec() format()
    frozenset() globals()
    hash() help() id() input()
    int() iter() locals()
    next() oct() ord()
    pow() repr() round()
    """

  • 相关阅读:
    “TensorFlow 开发者出道计划”全攻略,玩转社区看这里!
    适合 C++ 新手学习的开源项目——在 GitHub 学编程
    【9303】平面分割
    【u114】旅行计划(12月你好)
    【u236】火炬
    【u233】单词化简
    Java Web整合开发(41) -- Forum
    1、服务器(软件)种类
    jquery trigger
    jQuery实现当按下回车键时绑定点击事件
  • 原文地址:https://www.cnblogs.com/zhuzhizheng/p/11232573.html
Copyright © 2011-2022 走看看