美文网首页
Python3 - 手动遍历迭代器

Python3 - 手动遍历迭代器

作者: 惑也 | 来源:发表于2018-12-21 18:52 被阅读24次

问题

遍历一个可迭代对象中的所有元素,但是却不想使用for循环。

解决方案

为了手动地遍历可迭代对象,使用 next() 函数并在代码中捕获 StopIteration 异常。 比如:

# 首先获得Iterator对象:
it = iter([1, 2, 3, 4, 5])

# 循环:
while True:
    try:
        x = next(it)    # 获得下一个值
        print(x, end = ' ')
    except StopIteration:       # 遇到StopIteration就退出循环
        break

1 2 3 4 5 

通常来讲, StopIteration 用来指示迭代的结尾。 手动使用 next() 函数的话,可以通过返回一个指定值来标记结尾,比如 None 。 比如:

it = iter([1, 2, 3, 4, 5])
while True:
    x = next(it, None)
    if x is None:
        break
    print(x, end = ' ')

1 2 3 4 5 

讨论

大多数情况下,我们会使用 for 循环语句,遍历一个可迭代对象。 但是,偶尔也需要对迭代做更加精确的控制,了解底层迭代机制是必要的。

下面的交互示例,演示了迭代期间所发生的基本细节:

items = [1, 2, 3]
it = iter(items)

print(next(it))
1
print(next(it))
2
print(next(it))
3
print(next(it))
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
StopIteration

相关文章

  • 迭代器与生成器(cookbook笔记)

    迭代器与生成器 手动遍历迭代器 不使用for循环手动遍历迭代器 代理迭代 在一个新的容器(class)中迭代对象 ...

  • python cookbook第四章笔记

    4.1 手动遍历迭代器 你想遍历一个可迭代对象中的所有元素,但是却不想使用for循环。 为了手动的遍历可迭代对象,...

  • Python3 - 手动遍历迭代器

    问题 遍历一个可迭代对象中的所有元素,但是却不想使用for循环。 解决方案 为了手动地遍历可迭代对象,使用 nex...

  • 迭代器与生成器

    手动遍历迭代器: (遍历一个可迭代对像的所有元素,但不用for)使用next()函数遍历:判断结束时,根据异常St...

  • Python3 CookBook学习笔记 -- 迭代器与生成器

    1. 手动遍历迭代器 你想遍历一个可迭代对象中的所有元素,但是却不想使用for循环。 请使用 next() 函数并...

  • 集合的遍历

    集合的遍历一共有三种,普通for遍历,增强for遍历,迭代器遍历,增强for和迭代器,每种遍历的适用情况不同,增强...

  • Java遍历

    1 普通循环遍历 2 迭代器遍历 3 流遍历

  • php设计模式——迭代器模式

    迭代器模式 说明 迭代器模式是遍历集合的成熟模式,迭代器模式的关键是将遍历集合的任务交给一个叫做迭代器的对象,它的...

  • 迭代器模式

    一. 什么是迭代器模式 迭代器模式: 用来遍历集合对象 (集合在这里也叫做容器) 迭代器模式, 将对集合的遍历操作...

  • Python入门系列(五)——迭代

    目录:一、迭代器二、生成器 一、迭代器 我们提一下先提迭代的概念:迭代即为循环遍历,任何遍历的过程都是可以称作迭代...

网友评论

      本文标题:Python3 - 手动遍历迭代器

      本文链接:https://www.haomeiwen.com/subject/xczpkqtx.html