收录于话题
#Python入门
27个
概要:
1.迭代器:可迭代的对象.__iter__即可获取迭代器
2.dir():查看对象中的方法;
3.isinstance() 判断xxx对象是否是xxx类型
4.for循环调用迭代器
一.迭代器
1. Iterable: 可迭代的.里面有__iter__ 常见的有str, list. tuple, dict, set, open(), range()
print (\”__iter__\” in dir(可迭代对象))
在打印结果中. 寻找__iter__ 如果能找到. 那么这个类的对象就是一个可迭代对象
2. Iterator: 迭代器. 里面有__iter__ ,还有 __next__方法
3.特点:
1. 节省内存(欠)
2. 惰性机制(只有执行__next__()才会取值)
3. 只能向前. 不能反复
列子1:
lst=[1,2,3,4,5] #列表是可迭代的
x = lst.__iter__() #获取迭代器
print( \”__iter__\” in dir(x)) # 迭代器里面是有__iter__的.迭代器一定是可迭代的
print(\”__next__\” in dir(x)) #迭代器. 里面有__iter__ 还有 __next__
例子2:
lst = [1,2,3,4]
it=lst.__iter__()
print(it.__next__()) #1
print(it.__next__())#2
print(it.__next__())#3
print(it.__next__())#4
print(it.__next__())# 此时报错 StopIteration
二.dir() 查看数据可以执行的方法
例子3:
s = \”哇哈哈\”
print(dir(s)) #查看打印对象中的方法和函数
在打印结果中. 寻找__iter__ 如果能找到. 那么这个类的对象就是一个可迭代对象
三.isinstance() 判断xxx对象是否是xxx类型
例子4:
from collections import Iterable
from collections import Iterator
lst = [\”周润发\”,\”麻花藤\”,\”刘伟\”]
it=lst.__iter__() #迭代器
print(isinstance(it,Iterable)) #True
print(isinstance(it,Iterator))# True
print(isinstance(lst,Iterator)) #False
print(isinstance(lst,Iterable))#True
四.for循环的内部用迭代器
lst = [1,2,3,4]
lst_iter=lst.__iter__()
while 1:
try:
print(lst_iter.__next__())
except StopIteration:
break #结果 为1 2 3 4 换行输出的
我们可以把要迭代的内容当成子弹. 然后呢. 获取到迭代器__iter__(), 就把子弹都装在弹夹中. 然后发射就是__next__()把每一个子弹(元素)打出来. 也就是说, for循环的时候. 一开始的时候是__iter__()来获取迭代器. 后面每次获取元素都是通过__next__()来完成的. 当程序遇到StopIteration将结束循环.