分享

[每日一题]4、Python中的迭代器

 Four兄 2019-08-25

第一时间收到精彩推送!

Python Every Day, 第 4 天


迭代器的好处:

迭代器和列表的作用相似,但是列表随着元素个数的增加,所占用的空间也会增加。而迭代器的本质是一个对象,并不像列表那样通过索引获取元素,充分的节省了内存。

迭代对象:

在Python中,操作列表、字典、字符串等可以通过for ... in ... 的方式去获取对象中的元素,这个过程称为遍历,也叫做迭代。这些对象称为可迭代对象

这些对象都有一个 __iter__()方法,这个方法提供了一个迭代器。迭代器又会实现了__next__()方法。通过此方法可以去访问迭代对象中的元素。从第一个开始,顺序访问,直到访问到最后一个元素。会抛出StopInteration异常。

迭代器 和 迭代对象 的区别:

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

总结含有 __iter__() 【必须】和 __next__() 方法的就是迭代器。

有 __iter__() 方法代表可以使用for循环

有__next()__ 方法 可以通过next() 方法去获取迭代器中的元素

代码示例:

a = [135]
print(type(a))  # <class 'list'>
from collections import Iterable
# 创建一个a的迭代对象
a_iter = iter(a)
print(type(a_iter))  # <class 'list_iterator'>


print(a_iter.__next__())  # 1
print(a_iter.__next__())  # 3
print(a_iter.__next__())  # 5
print(a_iter.__next__())  # 迭代到最后一个元素时,会抛出StopIteration异常
# 使用for in 来遍历一个迭代对象
for i in a_iter:
    print(i)

# 遍历try except break
while 1:
    try:
        print(a_iter.__next__())
    except StopIteration:
        print('结束....')
        break

通过Iterator判断是否是迭代对象。

from collections import Iterable
# 判断列表是否是可迭代对象
print(isinstance([], Iterable))  # True
# 判断字典是否是可迭代对象
print(isinstance({}, Iterable)) # True
# 判断字符串是否是迭代对象
print(isinstance('Hello', Iterable)) # True

感谢您的阅读

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多