跳至內容
主選單
主選單
移至側邊欄
隱藏
導覽
首頁
近期變更
隨機頁面
MediaWiki說明
Taiwan Tongues 台語維基
搜尋
搜尋
外觀
建立帳號
登入
個人工具
建立帳號
登入
檢視 列表推導式 的原始碼
頁面
討論
臺灣正體
閱讀
檢視原始碼
檢視歷史
工具
工具
移至側邊欄
隱藏
操作
閱讀
檢視原始碼
檢視歷史
一般
連結至此的頁面
相關變更
特殊頁面
頁面資訊
外觀
移至側邊欄
隱藏
←
列表推導式
由於以下原因,您無權編輯此頁面:
您請求的操作只有這些群組的使用者能使用:
使用者
、taigi-reviewer、apibot
您可以檢視並複製此頁面的原始碼。
'''列表推導式'''(list comprehension), 是程序設計語言的一類語法結構,用佇基於描述創建一个列表(list)資料結構。佮數學上的集合建構式符號。但無仝款 map 佮 filter 函數。 「 list comprehension」無統一的中文譯法。有譯作列表解析式、列表生成式、列表構建、列表理解等。 ==概述== 考慮下述集合建構式符號: : $ S=\ { 二 \ cdot x \ mid x \ in \ mathbb { N } , \ x ^ { 二 } > 三 \ } $ 會當讀做:「 $ S $ 是所有「$ 二 $ 乘 $ x $」的數的集合,滿足 $ x $ 是自然數 $ \ mathbb { N } $,並且 $ x $ 的平方大於 $ 三 $。」 : $ S=\ { \ underbrace { 二 \ cdot x } _ { \ color { Violet } { \ text { 抹出表鋪式 } } } \ mid \ underbrace { x } _ { \ color { Violet } { \ text { 鋪量 } } } \ in \ underbrace { \ mathbb { N } } _ { \ color { Violet } { \ text { 知入集合 } } } , \ \ underbrace { x ^ { 二 } > 三 } _ { \ color { Violet } { \ text { 鋪排 } } } \ } $ * $ x $ 是表示輸入集合的成員的變量。 * $ \ mathbb { N } $ 表示輸入集合,遮是自然數。 * $ x ^ { 二 } > 三 $ 是人詞表示式,用佇對輸入集篩選。 * $ 二 \ cdot x $ 是輸出表達式,用佇產生新的集合。 * $ \ { \ } $ 花括號表示輸出值組成集合。 * $ \ mid $ 徛槓讀作「滿足」,會當同冒號「:」相換使用。 * $ , $ 弄號分隔稱詞,會當讀做「並且」。 列表推導式,佮迵天彼个輸入列表迵天代器,照伊一个列表的表示,有仝款的語法構件: * 代表輸入列表的成員的一个變量。 * 一个輸入列表(抑是迵天代器)。 * 一个可選的人詞(判斷)表達式。 * 佮對滿足這个判斷的,輸入迵天代者的成員,產生輸出列表的成員的一个表達式。 佇咧 Haskell 的列表推導式語法內底,上述集合建造結構類似的寫做如下: 遮的列表 ` [零 . .] ` 表示 $ \ mathbb { N } $,` x ^ 二 > 三 ` 表示叫詞,而且 ` 二 * x ` 表示輸出表達式。列表推導式,照一个確定的次序,共出結果(佮集合的成員無仝); 並且列表推導式,伊一遍欲成做一个列表的成員,非生成這个列表的全體,對頭前進行的對一个無窮列表的成員的 Haskell 定義。 ==歷史== 佇咧術語「列表推導式」欲用進前,伊就有關係的結構。集合論編程語言 SETL(一九六九年), 是有類似列表推導式的一種形成構造。比如講,這个代碼列印對 ` 二 ` 到 ` N ` 所有的素數: : ` ` ` print ( [n in [ 二 . . N] | forall m in { 二 . . n-一 } | n mod m > 零 ] ) ; ` ` ` 計算機代數系統 AXIOM(一九七三年), 有處理串流的類似構造。 頭一擺對這種構造的使用術語「推導式」,是佇一九七七年以後,Rod Burstall 和 John Darlington,用佇𪜶的函數式程式語言 NPL 欲描述內底。佇咧 David Turner 的回憶錄《函數式程式語言的一寡歷史》中,伊回想著: : NPL 由 Burstall 用 POP 二實現,並予人 Darlington 用佇咧程序變換的工課(Burstall & Darlington 一千九百七十七)。 這个語言,是一坎、強類型(但無講蓋濟)、 純函數式、傳值調用的。伊閣有「集合表達式」比如講: : ` ` ` setofeven ( X ) <=< : x : x in X & even ( x ) : > ` ` ` 佇咧予術語「列表推導式」附加的跤註中,Turner 閣記矣: : 我上頭仔叫「ZF 表達式」,參照矣 Zermelo-Frankel 集合論,Phil Wadler 鑄就了閣較好的術語「列表推導式」。 Burstall 和 Darlington 關於著 NPL 的工課,佇一九八空年代影響了真濟函數式的程式語言,但並毋是全部攏包括列表推導式。其中上有影響的,是一九八五年發行的,Turner 的閣愛和人純函數式程式語言 Miranda。後來開發的標準慢性純函數式的語言 Haskell,包括著矣 Miranda 的足濟特徵,包括列表推導式。 ==Python 示例== Python 語言的列表推導式佮生成器表達式的語法示例: ==推廣== ===並行列表推導式=== 格拉斯哥 Haskell 編譯器,有一个擴展叫做「並行列表推導式」(嘛叫做拉鏈推導式), 伊允准佇咧列表推導式語法內底,有真濟个獨立分支的限定符 ` <-`。用弄號 ` , ` 分隔的限定符,是依賴的(「 1875套的」); 用管道符號 ` | ` 分隔的限定符,是並行求值的(這無牽連任何形式的多執行緒性,這隻意味著遮的分是予人搝鍊合併的)。 Python 語言的語法示例: ===單仔推導式=== 佇咧 Haskell 中,單仔推導式會列表推導式,推廣為適用佇啥物單。 ===集合推導式=== Python 語言用於生成集合的語法示例: ===字典推導式=== Python 語言用於生做字典(關聯數組)的語法示例: ==類似構造== ===C + +=== C + + 無直接支持列表推導的任何語言特性,但是運算符重載(比如講,重載 |,> >,> >=)已經成功用佇咧為著「1875入式」查詢領域特定語言提供表達式語法。抑是講,會用得使用 erase-remove idiom 來構造列表推導以選擇容器中的元素,並使用 STL 算法 for \ _ each 來轉換𪜶。 ==參見== * 程式語言的列表推導式較 ==延伸閱讀== * List Comprehension in The Free On-line Dictionary of Computing , Editor Denis Howe . * Trinder , Phil . Comprehensions , a query notation for DBPLs . Proceedings of the third international workshop on Database programming languages : bulk types & persistent data , Nafplion , Greece : 五十五–六十八 . 一千九百九十二 . * Wadler , Philip . Comprehending Monads . Proceedings of the 一千九百九十 ACM Conference on LISP and Functional Programming , Nice . 一千九百九十 [二千空二十一孵三鋪十六] .(原始內容存檔佇兩千空二十五十一鋪十一). * Wong , Limsoon . The Functional Guts of the Kleisli Query System . Proceedings of the fifth ACM SIGPLAN international conference on Functional programming . International Conference on Functional Programming : 一–十 . 兩千 . ==參考文獻== ==外部連結== * SQL-like set operations with list comprehension one-liners in the Python Cookbook * Discussion on list comprehensions in Scheme and related constructs * List Comprehensions across languages [[分類: 待校正]]
返回到「
列表推導式
」。