?Python語言有一種獨特的推導式語法,相當于語法糖的存在,可以幫助你在某些場合寫出較為精簡酷炫的代碼,但沒有它,也不會有太多影響,Python語言有幾種不同型別的推導式,
?
1. 串列推導式
串列推導式是一種快速生成串列的方式,其形式是用方括號括起來的一段陳述句,如下例子所示:
lis = [x * x for x in range(1, 10)]
print(lis)
輸出
[1, 4, 9, 16, 25, 36, 49, 64, 81]
串列推導式要這么理解,首先執行for回圈,對于每一個x,代入x*x中進行運算,將結果逐一添加到一個新串列內,回圈結束,得到最終串列,它相當于下面的代碼:
lis = []
for i in range(1, 10):
lis.append(i*i)
print(lis)
輸出
[1, 4, 9, 16, 25, 36, 49, 64, 81]
串列推導式為我們提供了一種在一行內實作較為復雜邏輯的生成串列的方法,其核心語法是用中括號[]將生成邏輯封裝起來,
串列推導式有多重用法:
-
增加條件陳述句
lis = [x * x for x in range(1, 11) if x % 2 == 0]
輸出
[4, 16, 36, 64, 100]
-
多重回圈
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'>
要通過類似方法生成元組,需要顯式呼叫元組的型別轉換函式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'>
擴展閱讀
這15個短代碼,蘊含著豐富的python編程思維
推薦幾個適合新人上手的Python專案
給python程式員的方法速查表(手機版)
13道Python3實體練習
Python的常用操作示例
送書
|
| 關注「開學」 回復527163下載 ![]() |
喜歡就獎勵一個“????”和“在看”唄~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/275798.html
標籤:python
下一篇:Python生成九宮格圖片


