码迷,mamicode.com
首页 > 编程语言 > 详细

python_列表生成器/迭代器

时间:2019-12-18 23:43:26      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:调用   lam   yield   pytho   iter   style   count   turn   生成   

列表生成式

例如 有一个列表

a =[2,3,4,5]

需要将列表都加上1

#第一种方法
for i in map(lambda i:i+1,a)
#第二种方法
for index,i in enumerate(a):
    a[index] +=1

print(a)
#第三种,简单列表生成式
a = [i+1 for i in a]
print(a)
#加个三元运算符
a = [ i *2 if i>3 else i for i in a]

 1.列表生成器_惰性运算

1.1 生成器

中括号就是列表生成式,小括号就是列表生成器

a = ( i *2  for i in range(a))
def fib(num):
    count = 0
    a,b = 0 ,1 #a=0, b= 1
    while count < num:
        tmp = a
        a = b
        b = a + tmp
        #print(a)
        count +=1
        yield a #返回a, 同时挂起当前这个函数, a返回给了通过__next__()调用当前函数的人
        #return a
    print("done...")

f = fib(10)
print(f.__next__())

迭代器

 所有的生成器都是迭代器,迭代器不一定都是生成器(不同的角度,用iter方法,python

内存对象认为迭代器,从本质上就一回事)

例如 python 3里面 range(0,10) 这实际上就是一个迭代器

 

 

 

 



python_列表生成器/迭代器

标签:调用   lam   yield   pytho   iter   style   count   turn   生成   

原文地址:https://www.cnblogs.com/cdm023/p/12019783.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!