Python 基础 - 迭代器 / 迭代器对象 / 可迭代对象 / range函数

这篇具有很好参考价值的文章主要介绍了Python 基础 - 迭代器 / 迭代器对象 / 可迭代对象 / range函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 迭代器

2.迭代器对象

3. 可迭代对象

4. range函数


1. 迭代器

当类中定义了__iter__和 __next__两个方法

  • __iter__: 返回对象本身,即self
  • __next__: 返回下一个数据,如果没有数据,则抛出StopIteration异常
# 创建迭代器
class IT(object):
    def __init__(self):
        self.num = 100

    def __iter__(self):
        return self

    def __next__(self):
        self.num -= 1
        if self.num == -1:
            raise StopIteration()
        return self.num

2.迭代器对象

通过迭代器类实例化创建的迭代器对象

  • 可以通过 obj.__next__() 或 python内置函数next(obj) 来获取下一个数据
  • 还支持对迭代器对象进行for循环【注意:for循环在内部执行时,先执行__iter__()方法,获取一个迭代器对象,然后不断执行__next__取值
# 实例化迭代器对象
it = IT()
# 使用 __next__() 来获取下一个数据
print(it.__next__())    # 9
print(it.__next__())    # 8
# 使用 next(obj) 来获取下一个数据
print(next(it))         # 7
print(next(it))         # 6
# 使用 for 循环来遍历数据
for item in it:
    print(item, end=" ")   # 5 4 3 2 1 0

3. 可迭代对象

如果一个类中有__iter__方法并且返回一个迭代器对象,则称以这个类创建的对象叫可迭代对象。

  • 可迭代对象是可以用for来进行循环:与上述对迭代器对象的for循环步骤相同,先在循环内部先执行__iter__方法,获取迭代器对象,然后再执行迭代器对象的__next__函数,逐步取值。
  • List,tuple, dict和set都是可迭代对象
class IT2(object):
    def __iter__(self):
        return IT()     # 返回迭代器对象
    
it2 = IT2()    # 生成可迭代对象
for item in IT2():
    print(item, end=" ")    # 9 8 7 6 5 4 3 2 1 0 

4. range函数

在编程中常见的 range()函数,如 v1=range(100) 返回的是一个可迭代对象v1,因此文章来源地址https://www.toymoban.com/news/detail-426822.html

  • v2 = v1.__iter__获取的是迭代器对象,每执行一次 next(v2) 就会进行逐步取值
  • 或者用for循环进行遍历取值
v1 = range(5)
print(isinstance(v1, Iterable)) # True,返回的是可迭代对象

# 1. 使用for循环遍历
for v in v1:
    print(v, end=" ")   # 0 1 2 3 4 0

# 2. 先通过__iter__()获取迭代器对象,然后使用next获取到对应的值
v1_iterator = v1.__iter__() 
print(next(v1_iterator))    # 0
print(next(v1_iterator))    # 1
print(next(v1_iterator))    # 2
print(next(v1_iterator))    # 3

到了这里,关于Python 基础 - 迭代器 / 迭代器对象 / 可迭代对象 / range函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python中的range函数

    哈喽兄弟们!今天我们聊聊Python中很重要的range对象!(本文章基于Python3环境,Python2环境下的range会有所不同,但并不影响我们使用) 每一个Python初学者都一定在开始学Python不久就一定会遇到”range函数“,大家都把他叫做“range函数”,是因为我们在用它的时候像调用函数

    2024年02月02日
    浏览(36)
  • Python零基础入门(九)——函数,类和对象

    个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python入门专栏:《Python入门》欢迎阅读,一起进步!🌟🌟🌟 码字不易,如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!😊😊😊 欢迎来到 Python 零基础入门系列的第九篇!前面的文

    2024年02月15日
    浏览(45)
  • Python:可迭代对象与迭代器

    相关阅读 Python https://blog.csdn.net/weixin_45791458/category_12403403.html?spm=1001.2014.3001.5482         根据Python官方文档,可迭代对象(iterable)是“一种能够逐个返回其成员项的对象”。具体来说,这种对象要么定义了一个返回迭代器(iterator)的魔术方法__iter__(),要么定义了魔术方法__geti

    2024年04月29日
    浏览(36)
  • python入门基础(13)--类、对象、全局函数,类内部调用

        面向过程的编程语言,如C语言,所使用的数据和函数之间是没有任何直接联系的,它们之间是通过函数调用提供参数的形式将数据传入函数进行处理。 但可能因为错误的传递参数、错误地修改了数据而导致程序出错,甚至是崩溃。当需要修改或维护程序时要从程序提供

    2024年02月08日
    浏览(46)
  • Python中可迭代对象、迭代器详解

    在Python中,有这两个概念容易让人混淆。第一个是可迭代对象(Iterable),第二个是迭代器(Iterator),第三个是生成器(Generator),这里暂且不谈生成器。 可迭代对象 列表、元组、字符串、字典等都是可迭代对象,可以使用for循环遍历出所有元素的都可以称为可迭代对象(

    2024年02月02日
    浏览(43)
  • Python中range() 函数的使用介绍

    Python中的range()函数是一个非常实用的Python内置函数,用于生成整数序列,常用于循环操作和列表生成。在Python 3中,range()函数的返回值是一个迭代器对象。本文将详细介绍Python中range()函数的用法、参数和示例代码,以便更好地理解和掌握它的使用。 1.range()函数的用法 Pytho

    2024年02月11日
    浏览(39)
  • 10天玩转Python第6天:python 函数和面向对象基础 全面详解与代码示例

    不定长参数补充-函数调用时的拆包 匿名函数 语法 代码 练习 匿名函数作为函数的参数 - 列表中的字典排序 字符串比大小 基本的介绍 面向过程 关注的是 具体步骤的实现, 所有的功能都自己书写 亲力亲为 定义一个个函数, 最终按照顺序调用函数 面向对象 关注的是结果, 谁

    2024年02月04日
    浏览(61)
  • 【python学习】基础篇-编码与解码 decode()方法 将对象元素打包成元组zip()函数

    在 Python 中使用字符串对象的encode()方法来实现编码。 encode0 方法是字符串对象内置的一个实现方法用于实现编码操作。语法格式如下: str.encode([encoding[,errors]]) 解码字符串则需要使用 bytes 对象的 decode0 方法来实现。 bytes.decode([encoding[,errors]]) 参数encoding 表示要进行编码的字符

    2023年04月19日
    浏览(43)
  • 【Python 4】列表与元组slice切片 迭代 列表生成式 生成器generator 迭代器Iterator对象

    在Python中,代码不是越多越好,而是越少越好 取一个list或tuple的部分元素是非常常见的操作 对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作 L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3 如果第

    2024年02月07日
    浏览(55)
  • python中函数,装饰器,迭代器,生成器

    1.函数可以作为参数进行传递 2.函数可以作为返回值进行返回 3.函数名称可以当成变量一样进行赋值操作 作用:在不改变原有函数调用的情况下,给函数增加新的功能          即可以在函数前面增加新的功能,但不改变原来的代码 可迭代的数据类型都会提供迭代器,即可以

    2024年02月07日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包