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

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

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

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

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

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

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

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

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

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

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

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

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

class Iterable(metaclass=ABCMeta):
    __slots__ = ()
    @abstractmethod
    def __iter__(self):  # 注意点
        while False:
            yield None

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

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

1、谈谈对 Python 和其他语言的区别?

2、谈谈对 Python3 和 Python2 的区别?

3、Python 的特点和优点是什么?

4、说说Python解释器种类以及特点?

5、说说4种常用编码的区别?

6、说说Python面向对象三大特性?

7、说说Python中有几种数据类型?

8、说说Python中xrange和range的区别?

9、Python变量、函数、类的命名规则?

10、说说Python可变与不可变数据类型?

11、说说Python模块主要分哪三类?

12、列举Python中的标准异常类?

13、Python中深拷贝与浅拷贝的区别?

14、Python中迭代器和生成器的区别?

关注小猿公众号,每天学习一道题

(0)

相关推荐

  • 【Python 第75课】可迭代对象和迭代器

    for 循环是我们在 Python 里非常常用的一个语法,但你有没有思考过 for 循环是怎样实现的? 如果你以前接触过 C++,应该会知道类似 for (int i = 0; i < 100; ...

  • 弄懂这 5 个问题,拿下 Python 迭代器

    我的施工之路 1.我的施工计划 2.数字专题 3.字符串专题 4.列表专题 5.流程控制专题 6.编程风格专题 7.函数使用 8.面向对象编程(上篇) 9.面向对象编程(下篇) 10.十大数据结构 1 ...

  • 第一次把 Python 的切片理解得如此透彻

    来源:Python猫 作者:豌豆花下猫 众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串.列表.元组-)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢? 切片(slice) ...

  • Python常用的8个高级函数

    lambda 它们在其他语言中也被称为匿名函数.如果你不想在程序中对一个函数使用两次,你也许会想用lambda表达式,它们和普通的函数完全一样. lambda argument: manipulate ...

  • python 内置方法都有哪些?通过分类整合成一套简单的备忘教程

    一.入门函数 1.input() 功能: 接受标准输入,返回字符串类型 语法格式: input([提示信息]) 实例: # input 函数介绍text = input('请输入信息:')print( ...

  • 编程语言Python代码阅读(第8篇):列表元素逻辑判断

    Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码 本篇阅读的三份代码的功能分别是判断列表中的元素是否都符合给定的条件:判断列表中是否存在符合给定的条件的元素:以及判断列表中 ...

  • 第39天: Python itertools 模块

    简介 在 Python 中,迭代器是一种非常好用的数据结构,其最大的优势就是延迟生成,按需使用,从而大大提高程序的运行效率.而 itertools 作为 Python 的内置模块,就为我们提供了一套非 ...

  • 【Python核心编程笔记】一、Python中一切皆对象

    Python中一切皆对象 本章节首先对比静态语言以及动态语言,然后介绍 python 中最底层也是面向对象最重要的几个概念-object.type和class之间的关系,以此来引出在python如何做 ...

  • 4种JavaScript中不同迭代对象的方法

    WEB前端开发社区 2021-11-02 在今天这篇文章里,我将介绍了一些迭代对象并获取键值对的方法.这些技巧可以被视为小石头,最终将帮助您渡过 JavaScript 面试的一些小河流. 我知道每个独 ...

  • 一文读懂Python可迭代对象、迭代器和生成器

    IT头条 每日推送最新.最热点的IT界新闻 马化腾回应"腾讯没有梦想"截图系网友PS:天天P图回应<我的前世青年照>涉嫌收集个人隐私:马云称阿里不愿招北大清华毕业生-- ...

  • Python中可变对象和不可变对象的差异?

    众所周知,在Python中,万物皆对象.当然,Python也分为可变对象和不可变对象,那么你知道Python中可变对象和不可变对象的区别吗?我们来看看详细内容介绍. 不可变对象.该对象所指向的内存中的 ...

  • 【Python基础】Python中的高效迭代库itertools,排列组合随便求

    本文目录 一.模块概述 二.组合生成器 2.1 product 2.2 permutations 2.3 combinations 2.4 combinations_with_replacement ...

  • Python中迭代器和生成器的区别?

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

  • Python 中的函数装饰器和闭包

    函数装饰器可以被用于增强方法的某些行为,如果想自己实现装饰器,则必须了解闭包的概念. 装饰器的基本概念 装饰器是一个可调用对象,它的参数是另一个函数,称为被装饰函数.装饰器可以修改这个函数再将其返回, ...

  • Python中tuple和list的区别?基础学习!

    想必大家都知道,Python数据类型有很多种,其中有两个对象的写法非常相似,它就是tuple元组和list列表,让人傻傻分不清楚.那么你知道Python中tuple和list有什么区别吗?我们来看看具 ...