文章目录
1、迭代的概念
(1)什么是迭代
迭代就是单向地、逐个地访问某个容器中的元素的行为。 简单说迭代就是循环。
(2)迭代和遍历的区别
迭代是遍历的一种特例,遍历(traverse)是可以在数据结构上来回的游走,不仅可以往前,还可以往后,同时还能保证不重不漏的,迭代是单向的,逐个的,而且只来一次。
2、迭代器的概念
(1)概念
在Python
中常见的序列有list
、tuple
、set
、dict
、str
,我们也称之为容器。
我们之前在遍历这些容器的时候,针对不同的容器,每次写的代码还都有所差别。于是我们想能不能写一个工具,当我们需要对一个容器中的元素,进行单向的,一个接一个的取出来的时候,就调用这个工具。
这个工具可以帮我们把不同容器遍历细节上的不同屏蔽掉,当我们需要这个操作的时候,就把容器直接传给这个工具就好了,而这个工具就叫迭代器。
(2)优点
- 从序列类型中一个一个的取值,会把所有的值都取到。
- 节省内存空间,迭代器并不会在内存中占用一大块内存,面是随着循环每次生成一个,每调用一次
next
方法就会返回给我一个元素
3、可迭代的对象(Iterable)
(1)什么是可迭代的对象(Iterable)
简单的说,一个对象只要实现了只要实现了__iter__()
方法,就是一个可迭代的对象。
可以使用isinstance()
判断一个对象是否是Iterable
对象:
(2)Python中常见的可迭代数据类型
- 集合或序列类型(如
list
、tuple
、set
、dict
、str
) - 文件对象(以后扩展)
- 在类中定义了
__iter__()
方法的对象,可以被认为是Iterable
对象,
示例:
from collections.abc import Iterable
print(isinstance('', Iterable)) # true 字符串是可迭代的
print(isinstance([], Iterable)) # true 列表是可迭代的
print(isinstance((), Iterable)) # true 元组是可迭代的
print(isinstance({
}, Iterable)) # true 字典是可迭代的
print(isinstance(set()