1. 程式人生 > >每天學點Python之comprehensions

每天學點Python之comprehensions

ava i++ dsm pan ems parent 處理 能夠 pos

每天學點Python之comprehensions


推導式能夠簡化對數據的處理,讓代碼簡潔的同一時候還具有非常高的可讀性。這在Python中非經常見。

列表推導式

通過列表推導式能夠對列表中的全部元素都進行統一的操作來獲得一個全新的列表(原列表不發生變化),形式如[處理方式 for 元素 in 列表],當中的處理方式能夠是不論什麽操作:

>>> a=[1,2,3,4]
>>> [i*2 for i in a]
[2, 4, 6, 8]
>>> a
[1, 2, 3, 4]
>>> [(i*2
,i+10) for i in a] [(2, 11), (4, 12), (6, 13), (8, 14)]

能夠通過加上if語句來過濾掉原列表中的一些元素:

>>> a=[1,2,3,4]
>>> [i*2 for i in a if i>2]
[6, 8]

字典推導式

我們能夠通過推導式來創建一個字典,只是字典推導式的括號是花括號:

>>> a
[1, 2, 3, 4]
>>> { "str"+str(i):i for i in a }
{‘str3‘: 3, ‘str1‘: 1, ‘str4‘
: 4, ‘str2‘: 2}

運用字典推導式有一個妙用,就是能夠調換鍵和值的位置:

>>> a={‘one‘:1,"two":2,"three":3}
>>> {value:key for key,value in a.items()}
{1: ‘one‘, 2: ‘two‘, 3: ‘three‘}

註:確保值也是不可變類型,比如字符串、元組等

集合推導式

集合推導式與字典推導式相似。只是僅僅有一個值而不是鍵值對:

>>> a={1,2,3,4,5}
>>> {i**2 for i in
a if i%2==1} {1, 9, 25}

每天學點Python之comprehensions