python之迭代器

迭代器

1.概念: 迭代器指的是迭代取值的工具,迭代是一个重复的过程,每次重复都是基于上一次的结果而继续的,单纯的重复并不是迭代
2.特征: 并不依赖索引,而通过next指针迭代所有数据,一次只取一个值,大大节省空间
3.可迭代对象

setvar = {"a","b","c","d"}
for i in setvar:
	print(i)
	
# dir 获取当前类型对象中的所有成员
# __iter__ 方法用来判断是否是可迭代性数据
lst = dir(setvar)
print(dir("123"))

res = "__iter__" in dir(setvar)
print(res)

4.迭代器
for 循环能够遍历一切可迭代性数据的原因在于,底层调用了迭代器,通过next方法中的指针实现数据的获取
可迭代对象 -> 迭代器
不能够被next直接调用 -> 可以被next直接调用的过程
如果是一个可迭代对象不一定是迭代器
但如果是一个迭代器就一定是一个可迭代对象

(1) 如何定义一个迭代器

setvar = {"a","b","c","d"}
it = iter(setvar)
print(it)

(2) 如何判断一个迭代器

print(dir(it))
res = "__iter__" in dir(it) and "__next__" in dir(it)
print(res)

(3) 如何调用一个迭代器
res = next(it)
print(res)
res = next(it)
print(res)
res = next(it)
print(res)
res = next(it)
print(res)      
如果调用的次数大于迭代器中元素的个数,会报StopIteration 错
next在调用迭代器中的数据时,是单向不可逆的

(4) 重置迭代器
it = iter(setvar)
res = next(it)
print(res)
(5) 使用其他方式判断迭代器或者可迭代对象
 **Iterator 迭代器    Iterable 可迭代对象**

from collections import Iterator,Iterable
res = isinstance(it,Iterator)
print(res)
res = isinstance(it,Iterable)
print(res)

# (6) 使用其他方式调用迭代器中的数据

# 1. for 循环
for i in it:
	print(i)

# 2. for + next
lst = [1,2,3,4,5,6,7,7,8,9,10]
it = iter(lst)
for i in range(10):
	res = next(it)
	print(res)

print(next(it))
print(next(it))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值