python迭代器简介
来源:互联网 发布:知豆电动汽车官网 编辑:程序博客网 时间:2024/06/07 00:08
迭代器简要笔记内容及其示例
#!/usr/bin/python# -*- coding utf8 -*-'''迭代器迭代的概念:重复+上一次迭代的结果为下一次迭代的初始值重复的过程称为迭代,每次重复即一次迭代,并且每次迭代的结果是下一次迭代的初始值'''# while True: #只满足重复,因而不是迭代# print('====>')#下面才为迭代# l = [1, 2, 3]# count = 0# while count < len(l): # 只满足重复,因而不是迭代# print('====>', l[count])# count += 1## l = (1, 2, 3)# count = 0# while count < len(l): # 只满足重复,因而不是迭代# print('====>', l[count])# count += 1# s='hello'# count = 0# while count < len(s):# print('====>', s[count])# count += 1##为什么要有迭代器?对于没有索引的数据类型,必须提供一种不依赖索引的迭代方式#可迭代的对象:内置__iter__方法的,都是可迭代的对象# [1,2].__iter__()# 'hello'.__iter__()# (1,2).__iter__()## {'a':1,'b':2}.__iter__()# {1,2,3}.__iter__()#迭代器:执行__iter__方法,得到的结果就是迭代器,迭代器对象有__next__方法# i=[1,2,3].__iter__()## print(i)## print(i.__next__())# print(i.__next__())# print(i.__next__())# print(i.__next__()) #抛出异常:StopIteration# i={'a':1,'b':2,'c':3}.__iter__()# print(i.__next__())# print(i.__next__())# print(i.__next__())# print(i.__next__())dic={'a':1,'b':2,'c':3}#可迭代对象变成迭代器i=dic.__iter__()#用迭代器的方法取出所有while True: try: key = i.__next__() print(dic[key]) except StopIteration: breaks='hello'print(s.__len__()) #等同于len(s)s={'a',3,2,4}#s.__iter__() #iter(s)i = iter(s)print(next(i))print(next(i))print(next(i))print(next(i))#如何判断一个对象是可迭代的对象 还是迭代器对象# 'abc'.__iter__()# ().__iter__()# [].__iter__()# {'a':1}.__iter__()# {1,2}.__iter__()f=open('a','w')f.__iter__()#可迭代数据类型有 字符串 元组 列表 字典 元组 文件from collections import Iterable,Iteratorprint(isinstance('abc',Iterable)) #可迭代对象# print(isinstance([],Iterable))# print(isinstance((),Iterable))# print(isinstance({'a':1},Iterable))# print(isinstance({1,2},Iterable))# print(isinstance(f,Iterable))#是可迭代对象 不是迭代器 只有文件是迭代器print(isinstance('abc',Iterator)) #迭代器测试# print(isinstance([],Iterator))# print(isinstance((),Iterator))# print(isinstance({'a':1},Iterator))# print(isinstance({1,2},Iterator))print(isinstance(f,Iterator))print(isinstance('abc'.__iter__(),Iterator)) #执行完_iter_方法就是迭代器'''可迭代对象:只有__iter__方法,执行该方法得到的迭代器对象迭代协议: 对象有__next__ 对象有__iter__,对于迭代器对象来说,执行__iter__方法,得到的结果仍然是它本身 #文件类型'''dic={'name':'egon','age':18,'height':'180'}# print(dic.items())# for k,v in dic.items():# print(k,v)#for k in dic: #dic执行_iter_方法 i=dic._iter_() k = next(i) # print(k)i=iter(dic)while True: try: k=next(i) print(k) except StopIteration: break'''迭代器优缺点 优点:提供了一种不依赖于下标的迭代方式 迭代器本身来说,更节省内存缺点: 无法按索引取,无法回退 不如序列类型灵活'''#读取文件的节省内存方法,readlines默认读取文件所有内容到一个列表f=open('闭包.py',encoding='utf-8')## for line in f.readlines():# print(line)print(next(f))#for line in f:# print(line)#enumerrate也是迭代器l=[10000,2,3,4,5]i=enumerate(l)print(next(i))
阅读全文
0 0
- python迭代器简介
- Python迭代器简介
- python迭代器和生成器简介
- Python简介
- Python 简介
- Python简介
- Python 简介
- Python 简介
- Python 简介
- python简介
- python简介
- Python简介
- Python简介
- Python简介
- Python 简介
- python简介
- python简介
- Python简介
- 矩阵快速幂求斐波那契数列第n项
- POJ3278 BFS
- VTK交互之交互样式
- VMware中Ubuntu16.04 设置1920*1080
- POJ2965 枚举
- python迭代器简介
- 如何取数据五 spring+servlet(request取数据,然后setget dao)+jdbc存数据库
- 2015-2016 ACM-ICPC Pacific Northwest Regional Contest Div.2( Problem V Gears)
- 【Java】-- 对象和对象引用
- POJ1860 SPFA
- 如何用springcloud找妹纸之2--- 相识于江湖(Eureka)
- POJ3259 FLOYD
- 字符串操作函数
- 2017-05-29:Unity5.6连接Sql sever数据库