python知识点
Posted 思辨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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知识点的主要内容,如果未能解决你的问题,请参考以下文章