1. 程式人生 > >Python:匿名函式、列表推導式及生成器

Python:匿名函式、列表推導式及生成器

匿名函式用lambda關鍵詞能建立小型匿名函式。這種函式得名於省略了用def宣告函式的標準步驟,節省開闢空間。

Lambda函式能接收任何數量的引數但只能返回一個表示式的值,匿名函式不能直接呼叫print,因為lambda需要一個表示式

列表推導式:

生成器的 好處:生成器是將列表推導式的[]改成(),不會將所有的值一次性載入到記憶體中,延遲計算,一次返回一個結果,它不會一次生成所有的結果,這對大資料量處理,非常有用。

 第二種生成器yeild:

我們將原本在迭代器__next__方法中實現的基本邏輯放到一個函式中來實現,但是將每次迭代返回數值的return換成了yield,此時新定義的函式便不再是函式,而是一個生成器

了。簡單來說:只要在def中有yield關鍵字的 就稱為 生成器。

總結

  • 使用了yield關鍵字的函式不再是函式,而是生成器。(使用了yield的函式就是生成器)
  • yield關鍵字有兩點作用:
    • 儲存當前執行狀態(斷點),然後暫停執行,即將生成器(函式)掛起
    • 將yield關鍵字後面表示式的值作為返回值返回,此時可以理解為起到了return的作用
  • 可以使用next()函式讓生成器從斷點處繼續執行,即喚醒生成器(函式)
  • 我們除了可以使用next()函式來喚醒生成器繼續執行外,還可以使用send()函式來喚醒執行。使用send()函式的一個好處是可以在喚醒的同時向斷點處傳入一個附加資料。
  • Python3中的生成器可以使用return返回最終執行的返回值,而Python2中的生成器不允許使用return返回一個返回值(即可以使用return從生成器中退出,但return後不能有任何表示式)。

相關推薦

Python:匿名函式列表推導生成器

匿名函式用lambda關鍵詞能建立小型匿名函式。這種函式得名於省略了用def宣告函式的標準步驟,節省開闢空間。 Lambda函式能接收任何數量的引數但只能返回一個表示式的值,匿名函式不能直接呼叫print,因為lambda需要一個表示式 列表推導式:

遞迴函式匿名函式列表推導

遞迴函式<1>什麼是遞迴函式通過前面的學習知道一個函式可以呼叫其他函式。如果一個函式在內部不呼叫其它的函式,而是自己本身的話,這個函式就是遞迴函式。<2>遞迴函式的作用舉個例子,我們來計算階乘 n! = 1 * 2 * 3 * ... * n解決辦法1

PYTHON自動化Day6-函式多個返回值和匿名函式列表生成,三元運算子,os模組,sys模組,時間模組,字典排序,資料庫操作,加密(md5)

一.函式多個返回值和匿名函式 #函式返回多個值,用一個變數接收 def say(): num1=1 num2=2 num3=3 return num1,num2,num3 res=say() print(res) #打印出來是元組。 函式如果返回多個值的話,會把返回的

Python全棧__叠代器生成器知識點補充列表推導生成器表達如何系統科學的學習Python

ide swa XP iter count CA slow iterable 就是 1、叠代器   (1)可叠代對象 1 s1 = ‘123‘ 2 for i in s1: 3 print(i) 可叠代對象   示例結果: D:

生成器列表推導生成器表示式

生成器 生成器特點: 1. 生成器本質上迭代器 2. 生成器是自己用程式碼建立的 獲取生成器的兩種方式: 1. 生成器函式 2. 生成器表示式   yield 下面來看一個例子 1 def func(): 2 print(111) 3 yield 66

生成器列表推導生成器表達

print 一點 items 直接 iterable 字典推導式 urn exp 賦值 生成器 生成器特點: 1. 生成器本質上叠代器 2. 生成器是自己用代碼創建的 獲取生成器的兩種方式: 1. 生成器函數 2. 生成器表達式 yield 下面來看一個例子 1 d

三元表達列表推導生成器表達遞歸內置函數匿名函數

改變 現在 lose 知識庫 數據結構實現 結果 VM 情況 www. 一、三元表達式 name=input(‘姓名>>: ‘) res=‘SB‘ if name == ‘alex‘ else ‘NB‘ print(res) 二、列表推導式和生成器表達式

Python 三元表達列表推導生成器表達

urn obj 推導 變量 中間 用法 tor lis 元表 一、三元表達式 三元表達式,也稱為if,else的緊湊形式。具體用法如下: def max(a,b): if a>b: return a else: ret

三元表達列表推導生成器表達遞歸匿名函數內置函數

display eva ESS class div xxx exec condition 雞蛋 閱讀目錄 一 三元表達式、列表推導式、生成器表達式 二 遞歸與二分法 三 匿名函數 四 內置函數 五 階段性練習 一 三元表達式、列表推導式、生成器表達式 一 三元表

day012生成器函式生成器表示式列表推導

本節主要內容 生成器和生成器表示式 列表推導式 一、生成器 生成器實質就是迭代器 1、python中獲取生成器的三種方式: * 通過生成器函式 * 通過生成器表示式 * 通過資料的轉換獲取生成器 1.生成器函式 **fe1:**

六 三元表達列表推導生成器表達

pan abc 一次 pri 聲明 優點 express 推導 next 一 三元表達式 二 列表推導式 三 生成器表達式 一 三元表達式 1 name=input(‘姓名>>: ‘) 2 res=‘abc‘ if name == ‘l

python—day14內置函數2列表生成生成器表達模塊

left with open 列表生成式 表達式 兩件 style pytho per 數據 內置函數2、列表生成式與生成器表達式、模塊 內置函數2: 1 # pow(x,y,z) x,y,z x的y次方除於z 得出的結果是除數和余數 2 print(pow

生成器列表推導生成器表達

列表推導式 code ces next UNC col clas 賦值 style 一、 # def g_function(): # print(555) # ret1 = yield {1,3} # print(666) # g

python學習筆記:第12天 列表推導生成器

目錄 1. 迭代器 2. 推導式 1. 迭代器 什麼是生成器呢,其實生成器的本質就是迭代器;在python中有3中方式來獲取生成器(這裡主要介紹前面2種) 通過生成器函式獲取 通過各種推導式來實現生成器 生成器函式 我們來看一個普通的函式: In[2]: def fu

python學習筆記:第12天 列表推導生成器

clas traceback 括號 module recent else 接收 工作 last 目錄 1. 叠代器 2. 推導式 1. 叠代器 什麽是生成器呢,其實生成器的本質就是叠代器;在python中有3中方式來獲取生成器(這裏主要介紹前面2種) 通過生成器函數獲

自學Python--迭代列表生成生成器迭代器

可迭代物件:可通過for迴圈遍歷的物件。通過collections模組的Iterable判斷 from collections import Iterable print(isinstance('abc', Iterable)) # True 如果對列表實現類似java的

從0開始自學Python:9列表生成

如果要生成一串有規律(順序)的數字,可以考慮使用列表生成式。 比如說生成1*2,3*4,...,99*100 print [x*(x+1) for x in range(1,100,2)] 生成的時候加上條件,可直接在range()後面接上if  [x * x for x

day4-列表推導生成器表達

圖片 表達 class bsp 技術 com 列表推導 png src 用列表推導式變成一行: 列表解析: 列表解析最終生成的是一個真實存數據的列表。 2,生成器表達式: next一次執行一次。 day4-列表推導式與生成器表達式

4-4日 列表推導生成器推導

兩種模式 span 一個 列表 bsp 字符 ali eva pos 1,列表推導式就是在列表中進行for 循環if語句判斷,最多兩個for,一個if判斷 #求1到30 被3整除的數的平方 li = [i*i for i in range(1,31)if i%3 == 0

三元表達列表推導生成器表達

列表推導 轉換 推導式 turn ext append 生成 pri for 三元表達式:條件,條件成立,條件不成立。 def my_max(x,y): if x >= y : #條件 return x #條件成立