• 函数-生成器、迭代器


    #-----列表生成器-----

    1 a = [x*2 for x in range(10)]
    2 print(a,type(a)) #[0, 2, 4, 6, 8, 10, 12, 14, 16, 18] <class 'list'>
    3 
    4 def f(n):
    5     return n**3
    6 
    7 a = [f(x) for x in range(10)]
    8 print(a,type(a)) #[0, 1, 8, 27, 64, 125, 216, 343, 512, 729] <class 'list'>
    #-----简单赋值方式

    1 t = (12,45)
    2 a,b = t
    3 print(a)#12
    4 print(b)#45
    #----生成器(生成器就是可迭代对象)-----

     1 s = (x*2 for x in range(10))
     2 for i in s:
     3     print(i,end=" ") # 0 2 4 6 8 10 12 14 16 18
     4 
     5 #可迭代对象 :内部有iter 方法
     6 a = (1,2,3,5)
     7 a.__iter__()
     8 b = [2,3,4,5]
     9 b.__iter__()
    10 c = {"a":"d","g":"r"}
    11 c.__iter__()
    12 e = set(a)
    13 print(e,type(e))
    14 e.__iter__()
    #-----yield关键字生成斐波那契数列

     1 def fib(max):
     2     n,before,after = 0,0,1
     3     while n < max:
     4         yield after
     5         before,after = after,before+after
     6         n += 1
     7 
     8 g = fib(6)
     9 for i in g:
    10     print(i)
    #-----yield 使用

     1 def bar():
     2     print("ok1")
     3     str1 = yield 1
     4     print(str1)
     5 
     6     print("ok2")
     7     str2 = yield 2
     8     print(str2)
     9 b = bar()
    10 next(b)
    11 ret = b.send("ee")
    12 print(ret)
    #-----还可通过yield实现在单线程的情况下实现并发运算的效果

     1 import time
     2 
     3 def tourist(name):
     4     print("%s 开始吃包子" % name)
     5     while True:
     6         baozi = yield  #生成器函数(generator)
     7         print("%s吃了第%s个" % (name, baozi))
     8 
     9 def cook(name):
    10     c1  = tourist("A")
    11     c2 = tourist("B")
    12     c1.__next__()
    13     c2.__next__()
    14     print("%s开始做包子了" % name)
    15     for i in range(1,10):
    16         time.sleep(0.2)
    17         c1.send(i)
    18         c2.send(i)
    19 cook("dream")
    View Code
    #-----迭代器-----

    1、有iter方法
    2、有next方法
    1 a = ["dream","rise","happy"]
    2 d = iter(a) #<list_iterator object at 0x000001E01BFADA90>
    3 print(d)
    4 print(a.__iter__())#<list_iterator object at 0x00000258F8392668>
    
    
  • 相关阅读:
    [导入]开源一个的Asp.net公共上传文件程序
    [导入]安装Nginx,最近在研究这个,鄙视用F5的
    [导入]Movable Type 的 Feed Widget 很牛,真的很牛!
    [导入]如果得了ls综合症怎么办?
    [导入]鼓泡泡的电容!
    [导入]如果得了ls综合症怎么办?
    sql语法、函数等等大全
    学习ASP.NET MVC3(3) Razor视图引擎(上)
    学习ASP.NET MVC3(1) 概述
    依赖属性的好处
  • 原文地址:https://www.cnblogs.com/rise-home/p/11612358.html
Copyright © 2020-2023  润新知