Python之迭代器
2021/12/4 9:16:34
本文主要是介绍Python之迭代器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
迭代器
- 一.迭代器的优点
- 二.理解迭代器
- 三.定义迭代器
- 四.复制迭代器
一.迭代器的优点
迭代器访问与for循环访问非常相似,但是也有不同之处。对于支持随机访问的数据结构如元组和列表,迭代器并无优势。因为迭代器在访问的时候会丢失数据索引值,但是如果遇到无法随机访问的数据结构如集合时,迭代器是唯一访问元素的方式。迭代器仅仅在访问到某个元素时才使用该元素。在这之前,元素可以不存在,所以迭代器很适用于迭代一些无法预先知道元素总数的巨大的集合;
迭代器提供了一个统一的访问集合的接口,定义iter()方法对象,就可以使用迭代器访问**。
二.理解迭代器
可直接作用于for循环的数据类型如list、tuple、dict等统称为可迭代对象:Iterable。使用isinstance()可以判断一个对象是否是可迭代对象。
示例:
from collections import Iterable result = isinstance([],Iterable) print(result) result = isinstance((),Iterable) print(result) result = isinstance('python',Iterable) print(result) result = isinstance(213,Iterable) print(result)
结果为:
True True True False
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。next()函数访问每一个对象,直到对象访问完毕,返回一个StopIteration异常。使用isinstance()可以判断一个对象是否是Iterator对象。
例如:
from collections import Iterator result = isinstance([],Iterator) print(result) result = isinstance((),Iterator) print(result) result = isinstance((x for x in range(10)),Iterator) print(result)
结果为:
False False True
所有的Iterable都可以通过iter()函数转化为Iterator。
三.定义迭代器
当自己定义迭代器时,需要定义一个类。类里面包含一个iter()函数,这个函数能够返回一个带next()方法的对象。例如:
class MyIterable: def __iter__(self): return MyIterator() class MyIterator: def __init__(self): self.num = 0 def __next__(self): self.num += 1 if self.num >= 10: raise StopIteration return self.num
四.复制迭代器
迭代器当一次迭代完毕后就结束了,在此调用便会引发StopIteration异常。如果想要将迭代器保存起来,可以使用复制的方法:copy.deepcopy():x = copy.deepcopy(y),不可使用赋值的方法,这样是不起作用的。
例题示范:
补全ListCalculate.py文件中的部分代码,具体要求如下:
当输入一个列表时,填入将列表List转换为迭代器的代码;
填入用next()函数遍历迭代器IterList的代码。
代码示例:
List = [] member = input() for i in member.split(','): result = i List.append(result) #请在此添加代码,将List转换为迭代器的代码 #********** Begin *********# IterList=iter(List) #********** End **********# while True: try: #请在此添加代码,用next()函数遍历IterList的代码 #********** Begin *********# num=next(IterList) #********** End **********# result = int(num) * 2 print(result) except StopIteration: break
这篇关于Python之迭代器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门