笔记十一:迭代器

迭代器:能被next()调用并不断返回下一个值的对象为迭代器,迭代器是对象
1.概念:迭代器指的是迭代取值的工具,迭代是一个重复的过程,每次重复都是基于上一次的结果而继续的,单纯的重复不是迭代
2.特征:并不依赖索引,而是通过next指针(内存地址寻址)迭代所有数据,一次只取一个值,而不是一股脑把所有数据放进内存,大大节省空间

1.创建可迭代对象并检测

strvar={'a','b','c'}
#查询对象属性
lst=dir(strvar)
print(lst)
#判断是否是可迭代对象
res = '__iter__'in lst
print(res)

输出内容:

['__and__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
True

2.创建一个迭代器
用iter()来创建

strvar={'a','b','c'}
it = iter(strvar)
print(it)

输出结果:为对象以及其内存地址

<set_iterator object at 0x000001AFD8569080>

3.判断一个迭代器
必须__next__和__iter__都有才能确定为迭代器

res = dir(it)
a = '__next__' in res and '__iter__' in res
print(a)   #输出True

4.如何应用一个迭代器
利用next()每次只能调用一个数据,是单向不可逆的过程

a = next(it)
print(a)

若想重新调用,可以重置迭代器
调用迭代器方法二:

print(a.__next__())

5.调用迭代器的其他方法
(1)只用for

it = iter(strvar)
for i in it:
	print(i)

(2)for+next

it = iter(strvar)
for i in range(2):
    print(next(it))

6.判断迭代器/可迭代对象的其他方法

from collections import Iterable,Iterator
res=isinstance(it,Iterator)
print(res)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值