Python 可迭代对象

一、迭代器

    1、什么是迭代器

        1.1 迭代是一个重复的过程,每一次重复都是基于上一次的结果而进行的。

        1.2 单纯的重复并不是迭代

    2、为什么要用迭代器

        2.1 找到一种可以不依赖索引的迭代取值方式

    3、怎么用迭代器

        3.1 可迭代对象:在python中,但凡带有__iter__方法的数据类型,都是可迭代的对象

            1、可迭代的对象(数据类型)如下:

            c=['a','b']        #列表类型

            d=('a','b')        #元组类型

            e={'a','b'}        #集合类型

            f={'a':1,'b':2}    #字典类型

            g=open('aaa.py','rb',encoding='utf-8')    #文本类型


            2、不可迭代的对象(数据类型)如下:  

            a=1               #整数类型

            b=1.1            #浮点数类型

        3.2 迭代器对象:执行可迭代对象下__next__方法得到的返回值就是一个迭代器对象

c=['a','b']  
res=c.__iter__()
print(res)
>><list_iterator object at 0x000001A651A58198>    #迭代器的值

            迭代器对象内置__next__方法(取出列表内的值,通过迭代器取值。而不依赖于索引取值)

c=['a','b']          #针对列表使用迭代器取值
res=c.__iter__()

print(res.__next__())   #使用迭代器对象内置__next__方法,可以取出迭代器的值(取第一个)
>>a
print(res.__next__())   #使用迭代器对象内置__next__方法,可以取出迭代器的值(取第二个)
>>b
dic={'a':1,'b':2}    #针对字典使用迭代器取值
res=dic.__iter__()

print(res.__next__())   #使用迭代器对象内置__next__方法,可以取出迭代器的值(取第一个)
 >>a
print(res.__next__())   #使用迭代器对象内置__next__方法,可以取出迭代器的值(取第二个)
 >>b
print(res.__next__())   #使用迭代器对象内置__next__方法,可以取出迭代器的值(取第二个)
 >>Traceback (most recent call last):
 >>StopIteration     #当打印的值超过字典内值后们就会报错"StopIteration",这边是字典内的值被取光了

    解决"StopIteration"报错问题,使用try+except StopIteration的方式

dic={'a':1,'b':2}
res=dic.__iter__()

while True:
    try:
        print(res.__next__())
    except StopIteration:
        break
# >>a
# # >>b


    4、for 循环的底层运行机制

l=['a','b','v']    #定义列表
i=0
while i < len(l):  #使用while循环的方式打印列表l内的值
    print(l[i])
    i+=1
 
for n in l:     #使用for循环的方式打印列表l内的值
    print(n)








猜你喜欢

转载自blog.csdn.net/sinat_29214327/article/details/80386499
今日推荐