13.1迭代器

发布时间:2022-06-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了13.1迭代器脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
"""""""""1.迭代器对象 __iter__""""""什么是迭代器    迭代:更新换代(重复)的过程,每次的迭代都必须基于上一次的结果    迭代器:迭代取值的工具为什么要用    迭代器给你提供了一种不依赖于索引取值的方式如何用"""# 不算 因为只是简单的重复# n = 0# while True:#     print(n)# 重复 + 每次迭代都是基于上一次的结果而来的# l = [1,2,3,4]# s = 'hello'# n = 0# while n < len(s):#     print(s[n])#     n += 1"""需要迭代取值的数据类型    字符串    列表    元组    字典    集合"""# 可迭代对象# 只有内置有__iter__方法的都叫做可迭代对象"""补充:针对双下线开头双下划线结尾的方法推荐读:双下+方法名基本数据类型中    是可迭代对象的有        str list tuple dict set         文件对象(执行内置的__iter__之后还是本身 没有任何变化):文件对象本身就是迭代器对象"""n = 1f = 1.1s = 'hello'l = [1, 2, 34, ]t = (1, 2, 34)s1 = {1, 2, 3, 4}d = {'name': 'jason'}f1 = open('13.迭代器,生成器,常用内置方法', 'w+', encoding='utf-8')## res = s.__iter__()  # res = iter(s)## print(s.__len__())  # 简化成了len(s)# res1 = l.__iter__()  # res1 = iter(l)# res2 = f1.__iter__()  # res2 = iter(f1)# print(res,res1,res2)# print(f1)# 可迭代对象执行内置的__iter__方法得到就是该对象的迭代器对象"""2.迭代器取值 __next__""""""迭代器对象    1.内置有__iter__方法    2.内置有__next__方法    ps:迭代器一定是可迭代对象    而可迭代对象不一定是迭代器对象"""# l = [1,2,3,4]# # 生成一个迭代器对象# iter_l = l.__iter__()## # 迭代器取值 调用__next__# print(iter_l.__next__())# print(iter_l.__next__())# print(iter_l.__next__())# print(iter_l.__next__())# print(iter_l.__next__())  # 如果取完了 直接报错# d = {'name':'jason','password':'123','hobby':'泡m'}# # 将可迭代对象d转换成迭代器对象# iter_d = d.__iter__()# # 迭代器对象的取值 必须用__next__# print(iter_d.__next__())# print(iter_d.__next__())# print(iter_d.__next__())# print(iter_d.__next__())  # 取完了 报错StopIterationf11 = open('13.迭代器,生成器,常用内置方法','r',encoding='utf-8')# 调用f1内置的__iter__方法# iter_f = f11.__iter__()# print(iter_f is f11)"""迭代器对象无论执行多少次__iter__方法得到的还是迭代器对象本身(******)"""# print(f1 is f1.__iter__().__iter__().__iter__().__iter__())"""问:__iter__方法就是用来帮我们生成迭代器对象而文件对象本身就是迭代器对象,为什么还内置有__iter__方法???"""d1 = {'name':'jason','password':'123','hobby':'泡m'}# iter_d1 = d1.__iter__()# print(d1.__iter__().__next__())# print(d1.__iter__().__next__())# print(d1.__iter__().__next__())# print(iter_d1.__next__())# print(iter_d1.__next__())# print(iter_d1.__next__())# print(iter_d1.__next__())# 异常处理# while True:#     try:#         print(iter_d.__next__())#     except StopIteration:#         # print('老母猪生不动了')#         break# f = open('13.迭代器,生成器,常用内置方法','r',encoding='utf-8')# iter_f = f.__iter__()# print(iter_f.__next__())# print(iter_f.__next__())# print(iter_f.__next__())# print(iter_f.__next__())# print(iter_f.__next__())"""迭代器取值的特点    1.只能往后依次取 不能后退""""""3.for循环的本质"""d2 = {'name': 'jason', 'password': '123', 'hobby': '泡m'}# for i in d2:#     print(i)# for循环后面的in关键 跟的是一个可迭代对象"""for循环内部的本质    1.将in后面的对象调用__iter__转换成迭代器对象    2.调用__next__迭代取值    3.内部有异常捕获StopIteration,当__next__报这个错 自动结束循环"""# for i in 1:#     pass# iter(1)"""可迭代对象:内置有__iter__方法的迭代器对象:既内置有__iter__也内置有__next__方法迭代取值:    优点        1.不依赖于索引取值        2.内存中永远只占一份空间,不会导致内存溢出    缺点        1.不能够获取指定的元素        2.取完之后会报StopIteration错"""# l = [1,2,3,4]# res = map(lambda x:x+1,l)# print(map(lambda x:x+1,l))# print(res.__next__())# print(res.__next__())# print(res.__next__())l1 = [1, 2, 3, 4, 5]l2 = ['a', 'b', 'c']print(zip(l1, l2))

脚本宝典总结

以上是脚本宝典为你收集整理的13.1迭代器全部内容,希望文章能够帮你解决13.1迭代器所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: