• python学习day10


    一:  list 生成式

    #codeing:UTF-8
    #__author__:Duke
    #date:2018/3/9/009
    
    # list 生成器
    a = [x for x in range(10)]
    print(a)  #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    a = [x*x for x in range(10)]
    print(a)  #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    
    def f(n):
        return n**3
    a = [f(x) for x in range(10)]
    print(a)  #[0, 1, 8, 27, 64, 125, 216, 343, 512, 729]

    二:生成器

    生成器共两种创建方法
    
    # 一: 小括号法
    a = (x*2 for x in range(10))
    print(a)  #a  为 generator(生成器) object
    print(next(a))  # == print(a.__next__())
    print(next(a))  # == print(a.__next__())
    #genator  只能一个一个的接着读
    #
    # #生成器本来就是一个可迭代对象(iterable)
    for i in a:
        print(i)
    
    #二:  关键字法
    def fun():
        print("ok1")
        yield  1   #这是next 时的返回值
    
        print("ok2")
        yield 2
    a = fun()  #此时的fun()是一个生成器对象,不在是一个函数,它不会执行函数中的内容,
    next(a) # 完成第一个yield  的内容
    #
    print(next(a))
    ##   完成第二个yield  的内容  ,先执行next(a)
    #    会打印OK2  ,并返回2 ,所以打印的 next(a)就是打印返回值2
    
    
    #什么是可迭代对象?  对象有 iter  方法的对象就是迭代对象
    #常见的有  list  tuple  dict  set
    # a = set("a")
    # a.__iter__()
    
    def  fib( num ):
        n,a,b = 0,0,1
        while n<=num:
            print(b)
            a,b = b,a+b
            n= n+1
    
    fib(6)


    def  fib( num ):
    n,a,b = 0,0,1
    while n<=num:
    #print(b)
    yield b #改用装饰器方法
    a,b = b,a+b
    n= n+1

    for i in fib(6):
    print(i)
  • 相关阅读:
    How do I change a .txt file to a .c file?
    [CQOI2007]余数求和
    CSP-J总结&题解
    【CSP游记S】
    [LuoguP1462]通往奥格瑞玛的道路
    归并排序——逆序对
    [NOIP 2011]选择客栈
    [二分图初步]【模板】二分图匹配,匈牙利算法
    [NOIP 2018]旅行
    黑魔法师之门 (magician)-并查集
  • 原文地址:https://www.cnblogs.com/duke77--null/p/8536870.html
Copyright © 2020-2023  润新知