課程:B站大學
記錄python學習,直到學會基本的爬蟲,使用python搭建接口自動化測試就算學會了,在進階webui自動化,app自動化
循環語句小作業
- 元組推導式
- 列表推導式
- 字典推導式
- 實踐是檢驗真理的唯一標準
推導式
簡介
Python 推導式是一種獨特的數據處理方式,可以從一個數據序列構建另一個新的數據序列的結構體。
Python 支持各種數據結構的推導式:
- 元組 tuple 推導式
- 列表 list 推導式
- 字典 dict 推導式
- 集合 set 推導式
元組推導式
元組推導式可以利用 range 函數、元組、列表、字典和集合等數據類型,快速生成一個滿足指定需求的元組。
格式:
(out_exp_res for item in Sequence )
或
(out_exp_res for item in Sequence if conditional )
- out_exp_res:生成元素表達式,可以是有返回值的函數。
- for out_exp in Sequence:迭代 Sequence 將 out_exp 傳入到 out_exp_res 表達式中。
- if condition:條件語句,可以過濾 Sequence 中不符合條件的值。
示例:
# 簡單的元組推導式
t1 = (x for x in range(1,10))
# 生成128位ASCII碼元組
t2 = (chr(x) for x in range(128))
# 生成100以內能被7整除所有數字的元組
t3 = (x for x in range(100) if x%7==0)
# 生成99乘法表結果元組
t4 = (x*y for x in range(1,10) for y in range(1, x+1))
words = ["apple", "banana", "cherry"]
upper_words = (word.upper() for word in words)
列表推導式
列表推導式與元組推導式的區別:
格式上外部由圓括號包裹的表達式改為中括號
格式:
[out_exp_res for item in Sequence ]
或
[out_exp_res for item in Sequence if conditional ]
- out_exp_res:生成元素表達式,可以是有返回值的函數。
- for out_exp in Sequence:迭代 Sequence 將 out_exp 傳入到 out_exp_res 表達式中。
- if condition:條件語句,可以過濾 Sequence 中不符合條件的值。
示例:
# 簡單的元組推導式
l1 = [x for x in range(1,10)]
# 生成128位ASCII碼元組
l2 = [chr(x) for x in range(128)]
# 生成100以內能被7整除所有數字的元組
l3 = [x for x in range(100) if x%7==0]
# 生成99乘法表結果元組
l4 = [x*y for x in range(1,10) for y in range(1, x+1)]
# 將列表中的字符串轉換為大寫
words = ["apple", "banana", "cherry"]
upper_words = [word.upper() for word in words]
字典推導式
字典推導式與前兩種推導式的區別
推導式使用花括號包裹
結果表達式需要使用 key-value 形式
格式:
{ key_expr: value_expr for value in collection }
或
{ key_expr: value_expr for value in collection if condition }
示例:
names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
# 將列表中各字符串值為鍵,各字符串的長度為值,組成鍵值對
newdict = {name:len(name) for name in names}
集合推導式
集合推導式與字典推導式的區別在于結果表達式是單一結果,不是 key-value 形式。格式::{ expression for item in Sequence } 或 { expression for item in Sequence if conditional }示例:data = ['Bob','123','Tom','ab123','alice','123abc','Jerry','456','Wendy','554','Smith']
# 篩選列表中的數字字符串
newset = {n for n in data if n.isdigit()}
推導式的優點
簡潔高效 推導式允許在一行代碼中完成復雜的生成操作,避免了使用顯式的循環和臨時變量的繁瑣過程。可以大大減少代碼量,并提高編碼效率。
可讀性好 推導式使用簡潔的語法,將迭代、條件判斷和表達式結合在一起,使得代碼更加緊湊和易于理解。它提供了一種清晰、直觀的方式來表達列表生成的邏輯,使得代碼更加可讀性強,降低了出錯的可能性。
靈活性強 推導式非常靈活,可以根據需要添加條件判斷、多個迭代變量和嵌套結構,以滿足不同的需求。這使得推導式適用于各種場景,從簡單的數據轉換到復雜的篩選和操作,都可以通過簡單而直觀的語法實現。
推導式提供了一種簡潔高效、可讀性好和靈活性強的方法來處理可迭代數據。