?python中的推導式是一種獨特的數據處理方式,可以從一個數據序列去構建另一個新的數據序列的結構體。
它包括以下推導式:
- 列表(list)推導式
- 字典(dict)推導式
- 集合(set)推導式
- 元組(tuple)推導式
列表(list)推導式
列表推導式的一般格式為:
[表達式1 for?變量名?in?列表名]
或者對推導式結果進行篩選
[表達式1 for?變量名?in?列表名 if?表達式2]
其中,表達式1表示的是列表生成元素表達式,它可以是有返回值的函數;表達式2是條件過濾語句,可以過濾掉不符合條件的值。
以下是簡單的實例:
#列表推導式
#將list1乘以2倍輸出
list1=[1,2,3]
print([i*2 for i in list1 if i>1])
#list1中長度大于3的字符串,小寫全部轉成大寫輸出
list1=['lily','judy','Anny','Bob']
print([str.upper() for str in list1 if len(str)>3])
#打印20以內可以被2整除的整數
print([num for num in range(20) if num%2==0])
字典(dict)推導式
字典推導式的一般格式為:
{鍵:值表達式?for?鍵?in?序列}
或
{鍵:值表達式?for?鍵?in?序列?if?條件表達式}
下面是簡單的實例:
#字典推導式
#列表元素作為鍵,列表元素的長度作為值
list1=['name','sex','age']
dict1={str:len(str) for str in list1}
print(dict1)
#用推導式復制出一個擁有相同鍵值對的字典
dict2={'name':'卷鵝','sex':'男','age':28}
dict3={str:dict2[str] for str in dict2.keys()}
print(dict3)
print(id(dict2)) #對比兩個字典的id,是不同的
print(id(dict3))
#用推導式計算三個整數的冪方
dict4={num:num**2 for num in range(1,5)}
print(dict4)
#加上篩選條件
dict4={num:num**2 for num in range(1,5) if num!=3}
print(dict4)
集合(set)推導式
集合推導式的一般格式為:
{表達式?for?變量?in?序列}
或
{表達式?for?變量?in?序列?if?條件表達式}
簡單實例如下:
#集合推導式
set1={var**3 for var in range(1,6)}
print(set1)
set2={ch for ch in('a','b','c','d','e') if ch not in ('a','c')}
print(set2)
注意:輸出的集合是無序的
元組(tuple)推導式(生成器表達式)
元組推導式可以利用 range 區間、元組、列表、字典和集合等數據類型,快速生成一個滿足指定需求的元組。
元組推導式基本格式:
(表達式?for?變量名?in?序列)
??或
(表達式?for?變量名?in?序列?if?條件表達式)
元組推導式和列表推導式的用法完全相同,只是元組推導式是用?()?圓括號將各部分括起來,而列表推導式用的是中括號?[],另外元組推導式返回的結果是一個生成器對象。
但是我們可以用類型轉換函數將它轉換為一個元組
簡單的實例如下:
#元組推導式
a = (x for x in range(1,10))
print(a)
print(type(a))
tuple1=tuple(a)
print(tuple1)
print(type(tuple1))