python基础之迭代器与lamba表达式

迭代

每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。例如:循环获取容器中的元素。

可迭代对象iterable

具有__iter__函数的对象,可以返回迭代器对象。
对list、tuple、dict、set、str等类型的数据可以通过for…in…这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象(Iterable)。

 class 可迭代对象名称:
   def __iter__(self):
       return 迭代器

简单总结:

迭代器 = 可迭代对象.iter()
可以被next()函数调用并返回下一个值的对象

迭代器对象iterator

可以被next()函数调用并返回下一个值的对象。
实现了__next__()魔法方法(类实例化),该方法返回迭代器下一个值(保存得到下一个迭代值的算法)

class 迭代器类名:
	def __init__(self, 聚合对象):
		self.聚合对象= 聚合对象  

	def __next__(self):  
		if 没有元素:
		raise StopIteration
		return 聚合对象元素

理解可迭代对象iterable 与迭代器对象iterator

可迭代对象包含迭代器。
如果一个对象拥有__iter__方法,其是可迭代对象;如果一个对象拥有__next__方法,其是迭代器。
定义可迭代对象,必须实现__iter__方法;定义迭代器,必须实现__iter__和__next__方法。

使用__iter__与__next__实现迭代(不使用for):

# 定义list类型的可迭代对象
my_list = [1, 2, 3, 7, 8, 9]

# 获取迭代器
# iterator = my_list.__iter__() # 直接写法

# iter()函数实际上就是调用了可迭代对象的__iter__方法
iterator = iter(my_list)

# 循环获取下一个元素
while True:
    try:
        # item = iterator.__next__() 直接写法
        item = next(iterator) # 与iter() 同理
        print(item)
    # 异常处理
    except StopIteration:  
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值