python--推導式
阿新 • • 發佈:2017-10-27
logs 推導式 int 既然 python 語法糖 大括號 邏輯 我們
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)
列表推導式為我們提供了一種在一行內實現較為復雜邏輯的生成列表的方法。其核心語法是用中括號[]將生成邏輯封裝起來。
列表推導式有多種花樣用法:
增加條件語句
通過在後面添加if子句,對x進行過濾。
lis2 = [a + b for a in ‘123‘ if int(a) == 2 for b in ‘abcd‘] print(lis2)
結果:
[4, 16, 36, 64, 100]
多重循環
lis2 = [a + b for a in‘123‘ if int(a) == 2 for b in ‘abcd‘] print(lis2)
結果:
[‘2a‘, ‘2b‘, ‘2c‘, ‘2d‘]
2. 字典推導式
既然使用中括號[]可以編寫列表推導式,那麽使用大括號呢?你猜對了!使用大括號{}可以制造字典推導式!
註意x: x**2
的寫法,中間的冒號,表示左邊的是key右邊的是value
dic = {x: x**2 for x in (2, 4, 6)} print(dic)
結果:
{2: 4, 4: 16, 6: 36}
3. 集合推導式
大括號除了能用作字典推導式,還可以用作集合推導式,兩者僅僅在細微處有差別。
#集合推導式 a = {x for x in ‘abcwtrtfdad‘ if x not in ‘abc‘} print(a)
結果:
{‘r‘, ‘d‘, ‘w‘, ‘f‘, ‘t‘}
python--推導式