亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python迭代器和生成器定義與用法示例

發布時間:2020-08-31 23:17:42 來源:腳本之家 閱讀:152 作者:ccorz 欄目:開發技術

本文實例講述了Python迭代器和生成器定義與用法。分享給大家供大家參考,具體如下:

迭代器 iter()

迭代器是訪問集合中元素的一種方式,迭代器 object 從集合中的第一個元素開始訪問,直到所有的元素被訪問完成.

所以迭代器的特點是:只能往前,不能后退

迭代器的優點:不需要提前準備整個迭代器中的所有元素,僅僅迭代到某個元素時才計算該元素,而之前或者之后,元素可以不存在或者銷毀.因為這個特點,迭代器特別適合遍歷文件比較大或者無限的集合.

總結下迭代器 iter()的特點吧:

1.訪問者不需要關心迭代器內部的結構,僅需通過next()方法不斷去取下一個內容
2.不能隨機訪問集合中的某個值 ,只能從頭到尾依次訪問
3.訪問到一半時不能往回退
4.便于循環比較大的數據集合,節省內存

**迭代器是用__next__()來取值的,來看個例子吧:

li=[1,2,3,4,56,78]
a=iter(li)
print(a.__next__())
print(a.__next__())
print(a.__next__())
print(a.__next__())
print(a.__next__())
print(a.__next__()) #取值到最后一個元素787
print(a.__next__())

輸出:

1
2
3
4
56
78
#開始報錯
Traceback (most recent call last):
 File "/Users/shane/PycharmProjects/Py_study/Base/S5/iter_test.py", line 14, in <module>
  print(a.__next__())
StopIteration

生成器generator

一個函數調用時返回一個迭代器,那這個函數就叫做生成器(generator);如果函數中包含yield語法,那這個函數就會變成生成器

yield是個什么鬼?yield 其實和函數中的 return 一樣,一樣的是都會返回定義好的值,但不同的是,return 是退出函數,yield 只是暫停函數執行,等待下一次迭代器取值

我們來看個例子:

def func():
  print(111)
  yield 1
  print(222)
  yield 2
  print(333)
  yield 3
ret=func()
r1=ret.__next__()
print(r1) #如果沒有 print,只會返回111

out:

111
1

一個典型的生成器的取值方式:

def func():
  print(111)
  yield 1
  print(222)
  yield 2
  print(333)
  yield 3
ret=func()
r1=ret.__next__()
print(r1)
r2=ret.__next__()
print(r2)
r3=ret.__next__()
print(r3)
r4=ret.__next__()  #如果沒有 r4就不會報錯,因為已經沒值可取了
print(r4)

out:

Traceback (most recent call last):
 File "/Users/shane/PycharmProjects/Py_study/Base/S5/geno.py", line 21, in <module>
  r4=ret.__next__()
StopIteration
111
1
222
2
333
3

進程已結束,退出代碼1

來看一個比較完整一點的生成器和迭代器吧:

def myrange(args):
  start=0
  while True:
    if start > args:
      return
    else:
      yield start
      start+=1
res=myrange(3)
ret=res.__next__()
print(ret)
ret=res.__next__()
print(ret)
ret=res.__next__()
print(ret)
ret=res.__next__()
print(ret)
ret=res.__next__()
print(ret)

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python加密解密算法與技巧總結》、《Python編碼操作技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

虞城县| 建始县| 忻城县| 宜宾市| 双江| 资讯| 冕宁县| 大田县| 宁国市| 清镇市| 连平县| 西畴县| 屏东市| 胶州市| 阿合奇县| 西丰县| 伽师县| 连云港市| 神农架林区| 灵山县| 宜章县| 太湖县| 龙口市| 池州市| 会昌县| 太仓市| 昌都县| 柳林县| 宁国市| 抚顺市| 若尔盖县| 来安县| 会宁县| 武宁县| 安福县| 翁牛特旗| 长治县| 焦作市| 中宁县| 靖江市| 资阳市|