• Python3 生成器


      1 '''
      2 列表生成式
      3 '''
      4 
      5 # a1 = [x for x in range(10)]
      6 # a2 = [x*2 for x in range(10)]
      7 # print(a1)
      8 # print(a2)
      9 #
     10 # def fun1(x):
     11 #     return x**3
     12 # a3 = [fun1(x) for x in range(10)]
     13 # print(a3)
     14 #
     15 # # 列表生成式
     16 # # 取值方式
     17 # b = ['asd',8,9,10]
     18 # w,x,y,z = b
     19 # print(w,x,y,z)
     20 # print(b)
     21 #
     22 #
     23 # # 生成器
     24 # c = (x*2 for x in range(10))        # c是生成器对象
     25 # print(c)        # <generator object <genexpr> at 0x00000286BEF21CA8>
     26 # # print(next(c))  # 等价于 c.__next__(),在Python2中等价于 c.next()
     27 # # print(next(c))
     28 # # print(next(c))
     29 # # print(next(c))  # 超出范围会报错
     30 #
     31 # # 生成器是可迭代对象
     32 # import time
     33 # for i in c:     # for 对c进行了一个next()的功能
     34 #     print(i)
     35 #     # time.sleep(1)
     36 
     37 '''
     38 生成器的两种创建方式
     39 1.(x*2 for x in range(10))
     40 2.yield
     41 '''
     42 
     43 # def fun2():
     44 #     print('###')    # 此打印没有显示
     45 #     yield 1
     46 # print(fun2())       # fun2()是生成器对象
     47 #
     48 # def fun3():
     49 #     print('###')
     50 #     yield 1
     51 #
     52 #     print('asd')
     53 #     yield 2
     54 #
     55 #     return None
     56 #
     57 # c1 = fun3()
     58 # # next(c1)      # next()被返回1
     59 # # next(c1)      # next()被返回2
     60 #
     61 # for i in fun3():
     62 #     print(i)    # ‘###’, 1, ‘asd', 2
     63 #                 # 此时的1,2是上面的返回值
     64 
     65 
     66 '''
     67 什么是可迭代对象,可迭代对象拥有iter方法
     68 '''
     69 
     70 # list1 = [1,2,3]
     71 # list1.__iter__()
     72 #
     73 # tup1 = (1,2,3)
     74 # tup1.__iter__()
     75 #
     76 # disc1 = {'asd':123}
     77 # disc1.__iter__()
     78 
     79 
     80 
     81 # # 斐波那契数列
     82 # # 0 1 1 2 3 5 8 13 21 34
     83 # def fun4(max):
     84 #     q,before,after = 0,0,1
     85 #     while q < max:
     86 #         print(after)
     87 #         before,after = after,before+after
     88 #         q += 1
     89 # fun4(10)
     90 # print(fun4(8))
     91 
     92 # # 使用生成器创建斐波那契数列
     93 # def fun5(max):
     94 #     q,before,after = 0,0,1
     95 #     while q < max:
     96 #
     97 #         yield before
     98 #         before,after = after,before+after
     99 #         q = q + 1
    100 # z = fun5(8)
    101 # print(z)
    102 # print(next(z))
    103 # print(next(z))
    104 # print(next(z))
    105 # print(next(z))
    106 # print(next(z))
    107 
    108 
    109 '''
    110 send 方法
    111 '''
    112 # def fun5():
    113 #     print('a1')
    114 #     a = yield 1
    115 #     print(a)
    116 # 
    117 #     yield 2
    118 # x = fun5()
    119 # x1 = x.send(None)       # 等价于next(x)
    120 #                         # 第一次send前没有next,只能传一个send(None)
    121 # h = x.send('aaaaaaaaa')
    122 # print(h)
    123 
    124 '''
    125 send 比 next 多一个功能,是可以传入一个参数给其中的变量
    126 
    127 '''
  • 相关阅读:
    java加密解密用法
    进程和线程
    office使用技巧
    apktool+dex2jar+jd_gui
    shell编程学习
    编程常犯的错误
    编程语言学习清单
    使用github托管自己的项目
    c# 异常 的 异想
    DNLA自学(一) UPnP设备发现
  • 原文地址:https://www.cnblogs.com/Infi-chu/p/7684494.html
Copyright © 2020-2023  润新知