
很多 python 教程中,对 python 的解释不容易理解,本文记录自己的理解和体会,是对迭代器和生成器的初步理解
一、关于迭代的认识
给定一个列表、元祖、字典、甚至字符串,我们使用 for 去遍历,这样我们叫迭代
1、列表的迭代List1 = ['哈哈','西西','嘻嘻']for x in List1: print(x)2、列表中需要迭代出下标使用 enumerate
List1 = ['哈哈','嘻嘻']for index,value in enumerate(List1): print(index,value)3、元祖和字符串的迭代与列表的类似,一样的可以使用 enumerate 进行下标迭代 4、字典的迭代方式一
dict1 = {'name': '张三','age': 20,'gender': '男'}for item in dict1: print(item)5、字典的迭代方式二进群:960410445 即可获取数十套pdf哦!dict1 = {'name': '张三','gender': '男'}for key in dict1.keys(): print(key)6、字典的迭代方式三dict1 = {'name': '张三','gender': '男'}for value in dict1.values(): print(value)7、字典的迭代方式四dict1 = {'name': '张三','gender': '男'}for k,v in dict1.items(): print(k,v)二、可迭代与迭代器的区别
1、可迭代一般都可以使用 for 来遍历 2、迭代器不仅仅可以使用 for 遍历还可以使用 next() 函数一次获取一个元素 3、可迭代转换迭代对象使用 iter(可迭代对象) 4、判断可迭代对象与迭代器的方式from collections.abc import Iterator,Iterable# Iterable 表示可迭代对象# Iterator 表示迭代器List1 = [1,2,3]print(isinstance(List1,Iterator))print(isinstance(List1,Iterable))print(isinstance(iter(List1),Iterator))5、集合数据类型如 List 、 dict 、 str 等是 Iterable 但不是 Iterator ,不过可以通过 iter() 函数获得一个 Iterator 对象
三、自己实现一个可迭代的对象
1、方式一(在类中实现 __getitem__ 魔法函数)from collections.abc import Iterator,Iterableclass Company(object): def __init__(self,employee_List): self.employee = employee_List def __getitem__(self,item): return self.employee[item]if __name__ == "__main__": company = Company(['张三','李四','王五']) print(isinstance(company,Iterable)) print(isinstance(company,Iterator)) print(isinstance(iter(company),Iterator)) for item in company: print(item)2、方式二(在类中实现 __iter__ 魔法函数,需要结合 __next__ 魔法函数) 其实已经是迭代器
from collections.abc import Iterator,employee_List): self.employee = employee_List self.index = 0 def __iter__(self): return self3、总结 1. iter 内置函数会调用 __iter__ 魔法函数,如果没有 __iter__ 魔法函数就会去调用 __getitem__ 魔法函数 通过 isinstance(company,Iterable) 判断对象是否可迭代 通过 isinstance(company,Iterator) 判断对象是否为迭代器 可迭代器对象不代表是迭代器,但是可以通过 iter() 函数将可迭代的转换为迭代器 总结def next(self):
try:
current_val = self.employee[self.index]
except IndexError:
raise stopiteration
self.index += 1
return current_val
if name == "main":
company = Company(['张三',Iterator))
for item in company:
print(item)
以上是内存溢出为你收集整理的关于python中可迭代对象和迭代器的一些理解!全部内容,希望文章能够帮你解决关于python中可迭代对象和迭代器的一些理解!所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)