欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Python3中如何實現(xiàn)列表生成式、生成器與迭代器-創(chuàng)新互聯(lián)

這篇文章主要介紹Python3中如何實現(xiàn)列表生成式、生成器與迭代器,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

站在用戶的角度思考問題,與客戶深入溝通,找到比如網站設計與比如網站推廣的解決方案,憑借多年的經驗,讓設計與互聯(lián)網技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網站、成都網站建設、企業(yè)官網、英文網站、手機端網站、網站推廣、申請域名、雅安服務器托管、企業(yè)郵箱。業(yè)務覆蓋比如地區(qū)。

具體如下:

列表生成式

Python內置的一種極其強大的生成列表 list 的表達式。返回結果必須是列表。

基本語法:

[ 變量表達式 for 變量 in 表達式 ]

示例

a = [x ** 2 for x in range(1, 10)]
b = [x * x for x in range(1, 11) if x % 2 == 0]
c = [m + n for m in 'ABC' for n in '123']
d = {'Java': "99", 'C': "99", 'C++': "99"}
L = [k + '=' + v for k, v in d.items()]
print(a)
print(b)
print(c)
print(L)

通過列表生成式,可以直接創(chuàng)建一個列表,但是,受到內存的限制,列表容量是有限的,當列表元素很大的時候,會很浪費內存空間。所以可以通過生成器 Generator 生成。

生成器 Generator

Generator 是一種一邊循環(huán)一邊計算的機制。

應用場景:只需要獲得 list 中的前幾個元素,節(jié)省存儲空間。

使用 () 創(chuàng)建列表生成器

把列表生成式的中括號 [] 修改為圓括號即可 ()

a = (x ** 2 for x in range(1, 10))
b = (x * x for x in range(1, 11) if x % 2 == 0)
c = (m + n for m in 'ABC' for n in '123')
d = {'Java': "99", 'C': "99", 'C++': "99"}
L = (k + '=' + v for k, v in d.items())
print(a)
print(b)
print(c)
print(L)

打印結果如下

<generator object <genexpr> at 0x1052ec2b0>
<generator object <genexpr> at 0x1052ec468>
<generator object <genexpr> at 0x1052ec4c0>
<generator object <genexpr> at 0x1052ec518>

使用 next 調用元素:

print(a.__next__())
print(a.__next__())
print(a.__next__())
print(a.__next__())

next 方法會一個個的返回元素值,調用一次,返回一次下一個位置的元素。
該方法在沒有元素可以調用的時候,會返回 StopIteration 的錯誤

使用循環(huán)調用元素

for i in a:
  print(i)

該方法的好處,是不會返回 StopIteration 的錯誤

yield 關鍵字 創(chuàng)建 Generator

如果一個函數包含了yield 關鍵字,那么該函數就不再是普通的函數,而是一個生成器 Generatior。

print(sum) 修改為 yield(sum),即將原來的函數,修改為了生成器。

def fib(n):
  sum = 0
  i = 0
  while (i<n):
    sum = sum + i
    i += 1
    yield(sum)
print(type(fib(10)))
for x in fib(10):
  print(x)

包含 yield 語句的函數會被特定的編譯成生成器??梢园缮善骼斫鉃榈?。

在調用生成器運行的過程中,每次遇到 yield 時函數會暫停并保存當前所有的運行信息,返回yield的值。并在下一次執(zhí)行 next()方法時從當前位置繼續(xù)運行。

Generator 的工作原理,是在for循環(huán)的過程中不斷計算出下一個元素,并在適當的條件結束for循環(huán)。

對于函數改成的generator來說,遇到return語句或者執(zhí)行到函數體最后一行語句,就是結束generator的指令,for循環(huán)隨之結束。

python 生成器可參考 https://www.jb51.net/article/63929.htm

以下實例使用 yield 實現(xiàn)斐波那契數列

#!/usr/bin/python3
import sys
def fibonacci(n): # 生成器函數 - 斐波那契
  a, b, counter = 0, 1, 0
  while True:
    if (counter > n):
      return
    yield a
    a, b = b, a + b
    counter += 1
f = fibonacci(10) # f 是一個迭代器,由生成器返回生成
while True:
  try:
    print (next(f), end=" ")
  except StopIteration:
    sys.exit()

迭代器 iterator

  • 迭代器是訪問集合元素的一種方式

  • 迭代器有兩個方法,生成迭代器 iter(),返回迭代器的下一個項目 next()

  • 迭代器對象從集合的第一個元素開始訪問,知道所有元素被訪問結束。迭代器只能往前,不能回退。

  • 字符串、列表、元組 都可以用于創(chuàng)建迭代器

迭代器 iterator 和可迭代對象 iterable 的區(qū)別在于:

可以直接作用于for循環(huán)的對象統(tǒng)稱為可迭代對象:Iterable,list、tuple、dict、set、str、Generator 等等。

可以被next()函數調用并不斷返回下一個值的對象稱為迭代器:Iterator

使用 iter 創(chuàng)建迭代器

list、dict、str等數據類型不是Iterator,但是可以通過 iter() 來創(chuàng)建迭代器
list=[1,2,3,4]
it = iter(list)  # 創(chuàng)建迭代器對象
print (next(it))  # 輸出迭代器的下一個元素
  1
print (next(it))
  2

以上是“Python3中如何實現(xiàn)列表生成式、生成器與迭代器”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當前題目:Python3中如何實現(xiàn)列表生成式、生成器與迭代器-創(chuàng)新互聯(lián)
標題來源:http://aaarwkj.com/article30/dpggso.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機、品牌網站設計響應式網站、微信小程序、移動網站建設、建站公司

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿網站制作
亚洲欧洲中文字幕一区二区| 国产亚洲理论片在线观看| 在线播放国产91精品| 国产亚洲欧美精品久久久久| 欧美国产精品一区二区免费| 蜜臀久久精品亚洲一区| 久久这里精品中文字幕| 欧美日韩久久亚洲精品| 日韩欧美国产精品一区二区三区| 十八岁毛片一区二区三区| 亚洲欧美不卡一区二区| 久久99精品久久久子伦| 久久久精品免费福利视频| 日本少妇激情后入嗯啊| 国产精品日韩一区视频| 国产精品毛片视频一区二区| 日韩中文字幕在线首页| 国产亚洲精品视频免费| 欧美一区二区欧美精品| 亚洲成人自拍视频在线观看| 国产高清在线不卡一区| 亚洲人妻激情一区二区| 黄色亚洲大片免费在线观看| 国产免费播放一区二区三区| 久久精品国产一区二区三| 日本束缚人妻一区二区三区| 天堂av影片在线观看| 一卡二卡三卡四卡日韩| 在线蜜臀av中文字幕| 丝袜美腿一区二区三区| 人妻熟女一区二区aⅴ在线视频| 日韩欧美国产综合一区二区| 日本中文有码在线观看| 国产免费av一区二区在线观看| 91出品国产福利在线| 日韩一区二区免费看视频| 黄色片黄色片美女黄色片亚洲黄色片| 久久国产亚洲精品赲碰热| 日韩一区二区三区成人| 青青草日韩视频在线观看| 欧美日本道一区二区三区|