python知识点,,一.可迭代 ---与


一.可迭代 ---与-----序列

可迭代是任何你可以用python中的for循环遍历的东西。可迭代意味这可以遍历,任何可以遍历的东西都是可迭代的。

序列是一种非常常见的可迭代类型,列表,元组和字符串都是序列。

序列是可迭代的,他又一些特定的特征集。他们可以从0开始索引,以小于序列的长度结束,他们有一个长度并且他们可以被切分。列表,元组,字符串和其他所有的序列都是这样工作的。

Python中很多东西都是可迭代的,但不是所有的可迭代的东西都是序列。集合,字典,文件和生成器都是可迭代的,但是他们都不是序列。

序列可以使用下标的索引去遍历,但这种方式只适用与序列。

二。迭代器驱动for循环

python的for循环使用迭代器

迭代器就是可以驱动可迭代对象的东西。你可以从任何可迭代对象中获得迭代器,你也可以使用迭代器来手动对它的迭代进行遍历。

我们可以使用 Python 的内置iter函数来访问这些迭代器,将一个迭代器传递给iter函数总会给我们返回一个迭代器,无论我们正在使用哪种类型的迭代器。

转至http://python.jobbole.com/89181/    精华在文末

1 >>> numbers = {1, 2, 3, 5, 7}2 >>> coordinates = (4, 5, 7)3 >>> words = "hello there"
1 >>> iter(numbers)2 <set_iterator object at 0x7f2b9271c860>3 >>> iter(coordinates)4 <tuple_iterator object at 0x7f2b9271ce80>5 >>> iter(words)6 <str_iterator object at 0x7f2b9271c860>

从一个可迭代对象中获得一个迭代器,使用iter函数

一旦我们有了迭代器,我们可以做的事情就是通过将它传递给内置的next函数来获取它的下一项。

迭代器是有状态的,这意味着一旦你从它们中消耗了一项,它就消失了。

三。生成器是迭代器
生成器是迭代器,这意为这你可以在生成器上调用next来获得他们的下一项

生成器也是可以迭代的,

Python 中的每一个迭代器都是可迭代的,意味着你可以循环遍历迭代器。

因为迭代器也是可迭代的,所以你可以使用内置next函数从可迭代对象中获得迭代器

请记住,当我们在可迭代对象上调用iter时,它会给我们返回一个迭代器。

当我们在迭代器上调用iter时,它会给我们返回它自己迭代器是可迭代的,所有的迭代器都是它们自己的迭代器。

让我们回顾一些这些措辞。

一个可迭代对象是你可以迭代的东西一个迭代对象器是一种实际上遍历可迭代对象的代理

此外,在 Python 中迭代器也是可迭代的,它们充当它们自己的迭代器。

所以迭代器是可迭代的,但是它们没有一些可迭代对象拥有的各种特性。

你可以把迭代器看作是惰性迭代器,它们是一次性使用,这意味着它们只能循环遍历一次

技术分享图片

全部的迭代器协议

让我们从 Python 的角度来定义迭代器是如何工作的。

可迭代对象可以被传递给iter函数,以便为它们获得迭代器。

迭代器:

可以传递给next函数,它将给出下一项,如果没有下一项,那么它将会引发StopIteration异常可以传递给iter函数,它会返回一个自身的迭代器

这些语句反过来也是正确的:

任何可以在不引发TypeError异常的情况下传递给iter的东西都是可迭代的任何可以在不引发TypeError异常的情况下传递给next的东西都是一个迭代器当传递给iter时,任何返回自身的东西都是一个迭代器

这就是 Python 中的迭代器协议。

一下内容未能完全明白

迭代器如何改进你的代码

技术分享图片

四。部分的消耗迭代器

python知识点

评论关闭