Python 列表推導式提供了一種簡潔的編寫代碼方式,它允許您同時計算表達式的值並將其賦值給變量。使用 walrus 運算符(:=),我們可以優化代碼:
square_cubes = [res if (res := n**2) % 9 == 0 or res % 4 == 0 else n**3 for n in range(1, 11)] print(square_cubes) # 输出: [1, 4, 9, 16, 125, 36, 343, 64, 81, 100]
這裡,我們將 res
變量存儲計算結果 n**2
,並在後續代碼中復用,避免重複計算。
嵌套循環的列表推導式
列表推導式支持嵌套循環,for
循環數量沒有限制。但需注意,循環順序需與原始代碼一致。每個 for
循環後還可以添加可選的 if
條件。嵌套 for
循環的列表推導式結構如下:
[ for in (可选 if ) for in (可选 if ) for in (可选 if ) ... ]
以下示例演示了嵌套循環的列表推導式,用於生成乘法表:
multiplications = [] for i in range(1, 4): for n in range(1, 11): multiplications.append(i*n) print(multiplications) # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
將其轉換為列表推導式:
multiplications = [i*n for i in range(1,4) for n in range(1,11)] print(multiplications) # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
列表推導式還可以用於扁平化嵌套列表:
matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], ] flatten = [n for row in matrix for n in row] print(flatten) # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
嵌套列表推導式
嵌套列表推導式與嵌套循環的列表推導式不同。前者是推導式內部嵌套推導式,後者是循環內部嵌套循環。例如,矩陣轉置:
使用普通循環:
matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], ] transpose = [] for i in range(4): temp = [] for row in matrix: temp.append(row[i]) transpose.append(temp) print(transpose) # 输出: [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
使用嵌套列表推導式:
matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], ] transpose = [[row[n] for row in matrix] for n in range(4)] print(transpose) # 输出: [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
集合和字典推導式
列表推導式的概念也適用於集合和字典推導式。字典用於存儲鍵值對:
squares_cubes = {n: n**2 if n%2 == 0 else n**3 for n in range(1,11)} print(squares_cubes) # 输出: {1: 1, 2: 4, 3: 27, 4: 16, 5: 125, 6: 36, 7: 343, 8: 64, 9: 729, 10: 100}
集合推導式用於創建無序集合:
import random non_multiples = {n for n in random.sample(range(0, 1001), 20) if n not in range(0, 1001, 9)} print(non_multiples) # 输出 (示例): {3, 165, 807, 574, 745, 266, 616, 44, 12, 910, 336, 145, 755, 179, 25, 796, 926}
總結
本文介紹了 Python 列表推導式及其在代碼優化中的應用,包括嵌套循環、嵌套推導式以及集合和字典推導式。 需要注意的是,對於復雜的嵌套循環,為了提高代碼可讀性,可以將列表推導式拆分成多行。 建議根據實際情況選擇合適的方法,兼顧代碼效率和可讀性。
以上是列出Python中的綜合的詳細內容。更多資訊請關注PHP中文網其他相關文章!

theDifferenceBetweewneaforoopandawhileLoopInpythonisthataThataThataThataThataThataThataNumberoFiterationSiskNownInAdvance,而leleawhileLoopisusedWhenaconDitionNeedneedneedneedNeedStobeCheckedStobeCheckedStobeCheckedStobeCheckedStobeceDrepeTysepectients.peatsiveSectlyStheStobeCeptellyWithnumberofiterations.1)forloopsareAceareIdealForitoringercortersence

在Python中,for循環適用於已知迭代次數的情況,而while循環適合未知迭代次數且需要更多控制的情況。 1)for循環適用於遍歷序列,如列表、字符串等,代碼簡潔且Pythonic。 2)while循環在需要根據條件控制循環或等待用戶輸入時更合適,但需注意避免無限循環。 3)性能上,for循環略快,但差異通常不大。選擇合適的循環類型可以提高代碼的效率和可讀性。

在Python中,可以通過五種方法合併列表:1)使用 運算符,簡單直觀,適用於小列表;2)使用extend()方法,直接修改原列表,適用於需要頻繁更新的列表;3)使用列表解析式,簡潔且可對元素進行操作;4)使用itertools.chain()函數,內存高效,適合大數據集;5)使用*運算符和zip()函數,適用於需要配對元素的場景。每種方法都有其特定用途和優缺點,選擇時應考慮項目需求和性能。

foroopsare whenthenemberofiterationsisknown,而whileLoopsareUseduntilacTitionismet.1)ForloopSareIdealForeSequencesLikeLists,UsingSyntaxLike'forfruitinFruitinFruitinFruitIts:print(fruit)'。 2)'

toConcateNateAlistofListsInpython,useextend,listComprehensions,itertools.Chain,orrecursiveFunctions.1)ExtendMethodStraightForwardButverBose.2)listComprechencomprechensionsareconconconciseandemandeconeandefforlargerdatasets.3)

Tomergelistsinpython,YouCanusethe操作員,estextMethod,ListComprehension,Oritertools

在Python3中,可以通過多種方法連接兩個列表:1)使用 運算符,適用於小列表,但對大列表效率低;2)使用extend方法,適用於大列表,內存效率高,但會修改原列表;3)使用*運算符,適用於合併多個列表,不修改原列表;4)使用itertools.chain,適用於大數據集,內存效率高。

使用join()方法是Python中從列表連接字符串最有效的方法。 1)使用join()方法高效且易讀。 2)循環使用 運算符對大列表效率低。 3)列表推導式與join()結合適用於需要轉換的場景。 4)reduce()方法適用於其他類型歸約,但對字符串連接效率低。完整句子結束。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver CS6
視覺化網頁開發工具