日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python基础十一之迭代器和生成器

發布時間:2023/12/2 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python基础十一之迭代器和生成器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  可迭代

  內置方法中含有__iter__的數據類型都是可迭代的,只要是可迭代的就可以使用for循環,反之亦然。

print(dir('')) # dir()函數可以獲取當前數據類型的所有內置方法 返回值是list print('__iter__' in dir([])) # 判斷是否含有__iter__內置方法

?

  迭代器

  內置方法中含有__iter__和__next__的都是迭代器,所以迭代器一定是可迭代的

# 一個可迭代的對象調用__iter__()之后會返回一個迭代器 print(type([].__iter__())) # <class 'list_iterator'>

  迭代器可以使用__next__()方法一個一個去獲取值

li = [1, 2, 3, 4, 5] iterator = li.__iter__() print(iterator.__next__()) # 1 print(iterator.__next__()) # 2 print(iterator.__next__()) # 3

?

  迭代器的好處:

    從容器內一一取值,可以取出全部內容

    節省內存空間:每次取值時才在內存中生成一個值

?

  迭代器和可迭代判斷方法

from collections import Iterator from collections import Iterable print(isinstance([], Iterator)) # Iterator 迭代器 print(isinstance([], Iterable)) # Iterable 可迭代

?

?

  生成器

  生成器是含有yield關鍵字的迭代器。

# 定義 """def generator():函數體yield 返回值 """

  調用生成器后返回的是一個生成器。

def generator():print('生成器')yield 'zxc'return 'a' # 生成器中yield和return能同時存在,return在yield后面定義沒有任何意義, # return在yield前面定義將無法執行yield,也就不在是生成器了 ret = generator() print(type(ret)) # <class 'generator'>

?

轉載于:https://www.cnblogs.com/zxc-Weblog/p/8179123.html

總結

以上是生活随笔為你收集整理的python基础十一之迭代器和生成器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。