2018.09.28python学习第十三天part2
生活随笔
收集整理的這篇文章主要介紹了
2018.09.28python学习第十三天part2
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
part2
迭代器
# 1. 什么是迭代器(what)
# 迭代指的是一個重復的過程,每一次重復都是基于上一次的結果而來的
# li=['a','b','c','d','e']
# li=('a','b','c','d','e')
# li='hello'
#
# i=0
# while i < len(li):
# print(li[i])
# i+=1
# 迭代器指的是迭代取值的工具,該工具的特點是可以不依賴于索引取值
# 2. 為何要用迭代器?(why)
# 為了找出一種通用的&可以不依賴于索引的迭代取值方式
#
# 3. 如何用迭代器?(how)
# 可迭代的對象:但凡內置有.__iter__方法的對象都稱之為可迭代的對象
# str,list,tuple,dict,set,file
# 迭代器對象:既內置有__iter__方法,又內置有__next__方法
# file
# 關于__iter__方法:
# 調用可迭代對象的__iter__會的到一個迭代器對象
# 調用迭代器對象的__iter__會的到迭代器本身
#
"""
可迭代的對象——————》迭代器對象:
調用可迭代對象內置的.__iter__方法會有一個返回值,該返回值就是對應的迭代器對象
"""
# eg.1
# dic={'x':1,'y':2,'z':3}
# res1=dic.__iter__()
# print(res1)#res1 就是dic調用__iter__方法后的一個返回值,
# res2=res1.__next__()
# print(res2)#res2 就是既有__iter__方法,又有__next__方法的迭代器對象
# eg.2
# dic={'x':1,'y':2,'z':3}
# # dic=['a','b','c']
# iter_dic=dic.__iter__()
#
# iter_dic=open(r'文件名',mode='rt',encoding='utf-8')
#
# while True:
# try:
# print(iter_dic.__next__())
# except StopIteration:###這里是捕捉異常然后結束異常
# break
# for循環就是一個迭代器取值的過程,for循環的原理如下:
# 準確的說for循環應該就是迭代器循環,for循環的原理如下:
# 1.先調用for...in...中in后面的那個值的__iter__方法,并得到一個返回值(迭代器對象)
# 2.執行迭代器.__next__()方法得到的一個返回值,然后賦值給一個變量k,運行循環體代碼
# 3.循環往復,知道迭代器取值完畢拋出異常然后捕捉異常自動結束循環。
# 生成器(‘人造迭代器’)
# yield關鍵字:只能用在函數內
#
# eg.1
# def my_range(start,stop,step=1):
# while start < stop:
# yield start
# start+=step
#
# res=my_range(1,5,2) # 1 3
#
# next(res)
# next(res)##這就是一個“人造的range()”功能
# for item in my_range(1,5,2):
# print(item)
#
#
#
# eg.2
# def func():
# print('this is the first time')
# yield 1
# print('this is the second time')
# yield 2
# print('this is the third time')
# yield 3
# print('this is the fourth time')
# print(func)##得到一個函數的內存地址
# g=func()
# res=g.__next__()
# print(res)##1
# res1=g.__next__()
# print(res1)##2
# 在函數內單反包括yield關鍵字,再去執行函數,就不會立刻運行代碼了
# # 會得到一個返回值,該返回值就是生成器,生成器的本質就是迭代器。
# 總結yield:
# 1.提供一種自定義迭代器的解決方案
# 2.yield可用于返回值
# yield vs return
# 相同點:都可以用于返回值
# 不同點:yield是暫停函數,而return是直接結束函數
迭代器
# 1. 什么是迭代器(what)
# 迭代指的是一個重復的過程,每一次重復都是基于上一次的結果而來的
# li=['a','b','c','d','e']
# li=('a','b','c','d','e')
# li='hello'
#
# i=0
# while i < len(li):
# print(li[i])
# i+=1
# 迭代器指的是迭代取值的工具,該工具的特點是可以不依賴于索引取值
# 2. 為何要用迭代器?(why)
# 為了找出一種通用的&可以不依賴于索引的迭代取值方式
#
# 3. 如何用迭代器?(how)
# 可迭代的對象:但凡內置有.__iter__方法的對象都稱之為可迭代的對象
# str,list,tuple,dict,set,file
# 迭代器對象:既內置有__iter__方法,又內置有__next__方法
# file
# 關于__iter__方法:
# 調用可迭代對象的__iter__會的到一個迭代器對象
# 調用迭代器對象的__iter__會的到迭代器本身
#
"""
可迭代的對象——————》迭代器對象:
調用可迭代對象內置的.__iter__方法會有一個返回值,該返回值就是對應的迭代器對象
"""
# eg.1
# dic={'x':1,'y':2,'z':3}
# res1=dic.__iter__()
# print(res1)#res1 就是dic調用__iter__方法后的一個返回值,
# res2=res1.__next__()
# print(res2)#res2 就是既有__iter__方法,又有__next__方法的迭代器對象
# eg.2
# dic={'x':1,'y':2,'z':3}
# # dic=['a','b','c']
# iter_dic=dic.__iter__()
#
# iter_dic=open(r'文件名',mode='rt',encoding='utf-8')
#
# while True:
# try:
# print(iter_dic.__next__())
# except StopIteration:###這里是捕捉異常然后結束異常
# break
# for循環就是一個迭代器取值的過程,for循環的原理如下:
# 準確的說for循環應該就是迭代器循環,for循環的原理如下:
# 1.先調用for...in...中in后面的那個值的__iter__方法,并得到一個返回值(迭代器對象)
# 2.執行迭代器.__next__()方法得到的一個返回值,然后賦值給一個變量k,運行循環體代碼
# 3.循環往復,知道迭代器取值完畢拋出異常然后捕捉異常自動結束循環。
# 生成器(‘人造迭代器’)
# yield關鍵字:只能用在函數內
#
# eg.1
# def my_range(start,stop,step=1):
# while start < stop:
# yield start
# start+=step
#
# res=my_range(1,5,2) # 1 3
#
# next(res)
# next(res)##這就是一個“人造的range()”功能
# for item in my_range(1,5,2):
# print(item)
#
#
#
# eg.2
# def func():
# print('this is the first time')
# yield 1
# print('this is the second time')
# yield 2
# print('this is the third time')
# yield 3
# print('this is the fourth time')
# print(func)##得到一個函數的內存地址
# g=func()
# res=g.__next__()
# print(res)##1
# res1=g.__next__()
# print(res1)##2
# 在函數內單反包括yield關鍵字,再去執行函數,就不會立刻運行代碼了
# # 會得到一個返回值,該返回值就是生成器,生成器的本質就是迭代器。
# 總結yield:
# 1.提供一種自定義迭代器的解決方案
# 2.yield可用于返回值
# yield vs return
# 相同點:都可以用于返回值
# 不同點:yield是暫停函數,而return是直接結束函數
轉載于:https://www.cnblogs.com/hello-yuanjing/p/9720955.html
總結
以上是生活随笔為你收集整理的2018.09.28python学习第十三天part2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kubernetes基础:Pod的详细介
- 下一篇: 以太坊Dapp项目-网页钱包开发手册