前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中可迭代对象怎么获取迭代器?

Python中可迭代对象怎么获取迭代器?

作者头像
用户1564362
发布2019-09-23 17:31:38
8620
发布2019-09-23 17:31:38
举报
文章被收录于专栏:飞总聊IT飞总聊IT

公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助!

小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。

废话不多说,开始今天的题目:

问:说说Python中可迭代对象怎么获取迭代器?

答:今天这个问题,需要看下面代码解析,再来说参考答案,这样理解的看面试题,对大家的学习更有帮助,千万别死记硬背,那样记不牢的。

列表、元组、字典、字符串都是可迭代对象。

数字、布尔值都是不可迭代的。

昨天我们用了个简单的列表来说迭代器的用法:

代码语言:javascript
复制
list = [1,2,3,4] # list是可迭代对象
lterator = iter(list) # 通过iter()方法取得list的迭代器
print(next(lterator)) # 1 通过next()获取下一个位置的值
print(next(lterator)) # 2
print(next(lterator)) # 3
print(next(lterator)) # 4

输出:
1
2
3
4

也给大家预留了个问题,列表怎么可以有一个迭代器?今天就要重点来说说这个问题 。

代码语言:javascript
复制
import collections
print(isinstance([1, 2, 3], collections.Iterable)) #isinstance(object,classinfo)内置函数可以判断一个对象是否是一个已知的类型
输出:
True

从上面代码可以知道,可迭代对象都是collections模块里的Iterable类创建出来的实例。你写一个列表,不是简单一个列表,其实它就是Iterable类创建的实例对象。点进Iterable的类看一下:

代码语言:javascript
复制
class Iterable(metaclass=ABCMeta):
    __slots__ = ()
    @abstractmethod
    def __iter__(self):  # 注意点
        while False:
            yield None

原来由Iterable创建的对象,是有一个方法__iter__(self)的。这个方法就是返回一个迭代器的。所以,由Iterable类创建的实例对象,是可以拿出一个迭代器的。

如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!

文章转载自公众号

程序IT圈 , 作者 小猿同学

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 飞总聊IT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档