python編程中簡潔優(yōu)雅的推導式示例詳解
Python語言有一種獨特的推導式語法,相當于語法糖的存在,可以幫助你在某些場合寫出較為精簡酷炫的代碼。但沒有它,也不會有太多影響。Python語言有幾種不同類型的推導式。
1. 列表推導式
列表推導式是一種快速生成列表的方式。其形式是用方括號括起來的一段語句,如下例子所示:
lis = [x * x for x in range(1, 10)] print(lis)
輸出
[1, 4, 9, 16, 25, 36, 49, 64, 81]
列表推導式要這么理解,首先執(zhí)行for循環(huán),對于每一個x,代入x*x
中進行運算,將結(jié)果逐一添加到一個新列表內(nèi),循環(huán)結(jié)束,得到最終列表。它相當于下面的代碼:
lis = [] for i in range(1, 10): lis.append(i*i) print(lis)
輸出
[1, 4, 9, 16, 25, 36, 49, 64, 81]
列表推導式為我們提供了一種在一行內(nèi)實現(xiàn)較為復雜邏輯的生成列表的方法。其核心語法是用中括號[]將生成邏輯封裝起來。
列表推導式有多重用法:
增加條件語句
lis = [x * x for x in range(1, 11) if x % 2 == 0]
輸出
[4, 16, 36, 64, 100]
多重循環(huán)
lis = [a + b for a in '123' for b in 'abc']
輸出
['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']
更多用法
dic = {"name": "mumu", "age": "18"} a = [k+":"+v for k, v in dic.items()] print(a) # ['name:mumu', 'age:18']
2. 字典推導式
dic = {x: x**2 for x in (2, 4, 6)} print(dic) print(type(dic))
注意:x: x**2
的寫法,中間的冒號,表示左邊的key右邊的value。
輸出:
{2: 4, 4: 16, 6: 36} <class 'dict'>
3. 集合推導式
a = {x for x in 'abracadabra' if x not in 'abc'} print(a) print(type(a))
輸出:
{'r', 'd'} <class 'set'>
4. 元組推導式
沒有元組推導式
tup = (x for x in range(9)) print(tup) print(type(tup))
<generator object <genexpr> at 0x0000013DB865AA40> <class 'generator'>
要通過類似方法生成元組,需要顯式調(diào)用元組的類型轉(zhuǎn)換函數(shù)tuple(),如下所示:
tup = tuple(x for x in range(9)) print(tup) print(type(tup))
輸出:
(0, 1, 2, 3, 4, 5, 6, 7, 8) <class 'tuple'>
以上就是python編程中簡潔優(yōu)雅的推導式示例詳解的詳細內(nèi)容,更多關(guān)于python編程推導式的資料請關(guān)注本站其它相關(guān)文章!
版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。