Python迭代器详解:创建与优势

需积分: 50 16 下载量 148 浏览量 更新于2024-08-08 收藏 1.5MB PDF 举报
这篇教材主要讲解了如何在Python中创建和使用迭代器,以及相关的数据结构如列表、元组、字典和集合。迭代器是一种高效的数据遍历工具,允许我们按需访问序列中的元素,而无需一次性加载所有元素。迭代器通过实现`__next__()`方法和`__iter__()`方法来工作,前者用于获取下一个元素,后者返回迭代器本身。 一、迭代器的概念 迭代器是一种可以访问可迭代对象(如列表、元组等)的工具,它通过调用`__next__()`方法逐个获取元素,直至遍历完所有元素。迭代器的一个关键特点是只能向前移动,不支持后退,这使得它们特别适用于处理大量数据或无限序列,因为它们只在需要时计算元素,节省了内存。 二、创建迭代器 1. 使用内置的`iter()`函数可以将可迭代对象转换为迭代器。例如,`iter(a)`、`iter(b)`和`iter(str)`分别将列表、元组和字符串转化为迭代器。 2. 自定义迭代器需要实现`__iter__()`和`__next__()`方法。以斐波那契数列为例,创建一个名为`Fabs`的类,其中`__iter__()`方法返回类实例自身,`__next__()`方法则返回斐波那契序列的下一个数或引发`StopIteration`异常。 三、Python基础数据结构 1. **列表(List)**:有序集合,元素可变。例如,`classmates=['Michael','Bob','Tracy']`。 2. **元组(Tuple)**:有序且不可变的集合,与列表类似,但一旦创建就不能修改。如,`classmates=('Michael','Bob','Tracy')`。 3. **字典(Dict)**:键值对存储,查找速度快。如,`d={'Michael':95,'Bob':75,'Tracy':85}`,查找和插入速度与元素数量关系不大,但占用更多内存。 4. **集合(Set)**:无序且不重复的元素集合,不存储值。例如,`s=set([1,2,3])`,不允许存储可变对象。 四、高级特性:切片 切片操作符允许我们从序列中提取特定范围的元素。基本语法是`[start_index:stop_index:step]`,其中`start_index`是起始位置,`stop_index`是不包含的结束位置,`step`是步长,默认为1。例如,`m[:10]`将从列表`m`中提取前10个元素。 迭代器在Python中是处理序列数据的重要工具,结合不同的数据结构,如列表、元组、字典和集合,可以实现灵活高效的编程。同时,切片操作则为处理序列提供了简洁的语法,方便我们进行区间选取和操作。