生成器、迭代器、map、filter、reduce

1、生成器(generator)
列表中存放的数据有很多时,会占用大量的内存空间,而且有些列表里面的元素我们可能不会用到,列表元素可以按照某种算法推算出来,我们可以在循环的过程中不断推算后续的元素,而不用把列表里面所有元素都输入进去,在Python中,这种一边循环一边计算的机制,称生成器
生成器的生成方法一:列表生成式中的[]换成()
a=(i for i in range(1,10))
print(a) #a就是一个生成器
print(next(a)) #一个一个的提取生成器里面的元素,如果一个生成器里面的元素提取出来的话,接下来对生成器进行遍历或者转换为列表时,就没有已经提取出来的元素了,没有数据继续提取则会报错StopIteration
#生成器可以用for in进行遍历
for i in a:
print(a)
#生成器可以转换成列表
print(list(a))

方式二:使用yield
def test(n)
for i in range(1,n):
yield i #每次获取一个元素,yield后面的值会返回,每次执行到yield程序又会停止
t=test(5) #t时一个生成器
print(t)

2、迭代器
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator
迭代器都可以使用for in进行遍历,但是字典、元组、集合等不是迭代器,它们是可迭代的对象,生成器是特殊的迭代器
from collections import Iterator ,Iterable
a=(i for i in range(1,10))
print(isinstance(a,Iterator)) #判断是否是迭代器
lt=[2,3,5,1,2]
print(isinstance(lt,Iterable)) #判断是否是可迭代对象
lt2=iter(lt) #将可迭代对象转换为迭代器
print(isinstance(lt2,Iterator))

3、map 函数
map(function,iterable) (一个函数,一个可迭代的对象)
from collections import Iterator
lt=[2,3,5,6,1]
m=map(lambda x,y:x+y,lt)
print(m)
print(isinstance(m,Iterator)) #map对象是一个迭代器

4、filter参数:func(一个函数),iter1(一个可迭代的对象)
功能:使用func函数依次作用于interable中每个元素,返回的迭代器中会保留结果为真的数据
from collections import Iterator
lt=[2,1,5,9,4,3]
f=filter(lambda x:x%2==0,lt)
print(f)
print(isinstance(f,Iterator))
for i in f:
print(i)

5、reduce 参数:function(一个函数),sequeue(一个序列)
首先从序列中提取两个元素使用function进行处理,处理的结果和下面的一个元素再使用function进行处理
from functools import reduce
lt=[6,3,2,4,8]
result=reduce(lambde x,y:x+y,lt)
print(result)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值