記錄---python推導式的使用
推導式:用一行迴圈判斷遍歷出一系列資料的方式
注:推導式在使用時只能使用for迴圈和if判斷,if判斷只能是單項判斷
推導式有三種形式:列表推導式、集合推導式、字典推導式
①普通推導式:通過[]和for形式構成
②帶有判斷的推導式:通過[] for if形式構成
③多迴圈推導式:通過[] for for...形式構成
④帶有判斷條件的迴圈推導式:通過[] for for if的形式構成
一、列表推導式
eg1:
list_a = [f'data"{i}"'for i in range(100)]
print(list_a)
執行結果:['data"0"', 'data"1"', 'data"2"', 'data"3"', 'data"4"', 'data"5"', 'data"6"',...]
eg2:生成一個['data1', 'data3', 'data5'......'data99']的列表
list_b = [f'data"{i}"'for i in range(100) if i % 2 == 1] # if在最後起過濾作用
print(list_b)
eg3:生成一個['data0', 'num1', 'data2', 'num3'.....'data98', 'num99']的列表
list_c = [f'data"{i}"'if i % 2 == 0 else f'num"{i}"'for i in range(100)] # 'data' if else 'num'做條件判斷,迴圈在後
print(list_c)
# 三元運算子
age = input('輸入年齡:')
res = '成年' if age > 17 else '未成年'
print(res)
二、字典推導式
eg1:有一個列表list_d,把它轉換為一個下標為key,值為value,字典格式的資料
list_d = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
非推導式做法:
dict_a = {}
for i, j in enumerate(list_d):
dict_a[i] = j
print(dict_a)
推導式做法:
# 語法:{key:value for i in xx}
dict_b = {k: v for k, v in enumerate(list_d)}
print(dict_b)
執行結果:
{0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g'}
eg2:將如下字元資料轉化為字典
cook_str = 'BIDUPSID=D0727533D7147B7;PSTM=1530348042; BAIDUID=B1005C9BC2EB28; sugstore=0;__cfduid=d0a13458f8ac2a;BD_UPN=12314353;ispeed_lsm=2;BDORZ=B490B5EBF6F3CD402'
# 字典推導實現
dict_c = {i.spilt('=')[0].strip(): i.split('=')[1] for i in cook_str.split(';')}
print(dict_c)
# 字典推導式結合列表推導式使用
dict_d = {k.strip(): v for k, v in [i.split('=') for i in cook_str.split(‘;’)]}
print(dict_d)
執行結果:
{'BIDUPSID': 'D0727533D7147B7', 'PSTM': '1530348042', 'BAIDUID': 'B1005C9BC2EB28', 'sugstore': '0', '__cfduid': 'd0a13458f8ac2a', 'BD_UPN': '12314353', 'ispeed_lsm': '2', 'BDORZ': 'B490B5EBF6F3CD402'}
三、集合推導式
eg:
gather_a = {i * 5 for i in range(11)}
print(gather_a)
執行結果:
{0, 35, 5, 40, 10, 45, 15, 50, 20, 25, 30}
PS:
enumerate()函式:用於將一個可遍歷的資料物件(如列表、元組或字串)組合為一個索引序列,同時列出資料下標和資料,一般用在 for 迴圈當中。
split()函式:拆分字串,通過指定分隔符對字串進行切片,並返回分割後的字串列表(list)。
strip()函式:方法用於移除字串頭尾指定的字元(預設為空格或者換行符)或字元序列。
zip()函式:用於將可迭代的物件作為引數,將物件中對應的元素打包成一個個元組,然後返回由這些元組組成的列表。