Python 可迭代对象

这篇文章翻译自https://www.pythontutorial.net/python-basics/python-iterables/


Python 可迭代对象

简介:在这篇教程,你将学习 Python 可迭代对象和迭代器

Python 迭代器简介

在 Python 中,可迭代对象是包含零个、一个或多个元素的对象。可迭代对象能够一次返回一个元素。

由于这个功能,你可以使用 for 循环迭代可迭代对象。

事实上, range() 函数是一个可迭代对象,因为你可以迭代它的结果:

for index in range(3):
    print(index)

输出:

0

1

2

此外,字符串是可迭代的,因为您可以使用 for 循环对其进行迭代:

str = 'Iterables'
for ch in str:
    print(ch)

列表和元组也是可迭代对象,因为您可以遍历它们。例如:

ranks = ['high', 'medium', 'low']

for rank in ranks:
    print(rank)

根据经验来看,如果你可以循环某个东西,那它就是可迭代的。

什么是迭代器

一个可迭代对象可以被迭代。迭代器是执行迭代的代理。

要从可迭代对象中获取迭代器,可以使用 iter() 函数。例如:

colors = ['red', 'green', 'blue']
colors_iter = iter(colors)

一旦有了迭代器,就可以使用 next() 函数从可迭代对象中获取下一个元素:

colors = ['red', 'green', 'blue']
colors_iter = iter(colors)

color = next(colors_iter)
print(color)

输出:

red 

每次调用 next() 函数时,它都会返回可迭代对象中的下一个元素。例如:

colors = ['red', 'green', 'blue']
colors_iter = iter(colors)

color = next(colors_iter)
print(color)

color = next(colors_iter)
print(color)

color = next(colors_iter)
print(color)

输出:

red

green

blue

调用 next() 函数时,如果迭代器没有更多元素,你将得到一个异常。

colors = ['red', 'green', 'blue']
colors_iter = iter(colors)

color = next(colors_iter)
print(color)

color = next(colors_iter)
print(color)

color = next(colors_iter)
print(color)

# cause an excpetion
color = next(colors_iter)
print(color)

此示例首先显示颜色列表的三个元素,然后发出异常:

red
green
blue
Traceback (most recent call last):
  File "iterable.py", line 15, in <module>
    color = next(colors_iter)
StopIteration

迭代器是状态性的,这意味着一旦你迭代了一个元素,这个元素就从迭代器中消失了。

换句话说,一旦你完成了迭代器的循环,迭代器就变成了空的。如果你再次迭代它,它什么也不会返回。

因为你可以在一个迭代器上进行迭代,所以迭代器也是一个可迭代的对象。这是相当令人困惑的。比如说:

colors = ['red', 'green', 'blue']
iterator = iter(colors)

for color in iterator:
    print(color)

输出:

red

green

blue

如果你调用 iter() 函数并向其传递一个迭代器,它将返回相同的迭代器。

稍后,你将学习如何创建迭代表。

总结

  • 一个可迭代对象是一个可以被迭代的对象,它能够一次返回其中的一个元素。

  • 迭代器是一个执行迭代的代理。它是有状态的。而迭代器也是一个可迭代的对象。

  • 使用 iter() 函数从一个可迭代对象中获得一个迭代器,使用next()函数从可迭代对象中获得下一个元素。

(全文完)

部分图片来自于源网站,侵删。

鉴于本人才疏学浅,翻译难免有所疏漏,如果有任何问题欢迎随时联系我进行批评指正:2076577077@qq.com

我是gled fish, 点击这里来到我的博客网站:


转载请注明译者和原出处,请勿用于任何商业用途。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值