python初學一(列表、集合、字典推導式,又稱為解析)
阿新 • • 發佈:2018-11-11
一、列表與集合推導式(解析):列表解析不是函式,區分lambda
1、列表與集合推導式的語法:
列表解析的結果是list,集合解析的結果是set,字典解析的結果是dict,後面兩個是 { }。
例項:
1、列表解析的理解: 列表解析可以在腦海中將其轉化為for迴圈的式子。
# for迴圈控制迴圈次數,同時遍歷出i的值,然後去做if條件判斷,最後去計算表示式。 a = 0 list1 = [a for i in range(0,4) if i<4] list2 = [i for i in range(0,4) if i<4] print(list1) print(list2) #
結果:
2、一個典型的例題:
思考:由於元素乘積索引一一對應,因此可for尋找索引:
程式碼:
3、列表解析是可以巢狀的:
列表解析除了可以使用多個for以外,還可以將上一層的遍歷值作為下一層的迭代物件:
二、字典的推導式(字典解析):
1、字典解析式的語法:
例項:
# 使用items()方法顛倒鍵名和值
dict2 = {'a': 10, 'b': 34}
dict3 = {v:k for k,v in dict2.items()}
print(dict3) #{10: 'a', 34: 'b'}
2、系統函式enumerate():
list1 = ['a','c','b','b']
print(list(enumerate(list1))) # enunmerate()結果是一個可迭代物件,用list轉化
dict1 = {k:v for k,v in enumerate(list1)} # 字典解析
print(dict1)
# 結果:
[(0, 'a'), (1, 'c'), (2, 'b'), (3, 'b')]
{0: 'a', 1: 'c', 2: 'b', 3: 'b'}
三、列表解析求較複雜的題目:
題目:
程式碼1:
程式碼2:
list1 = [i for i in range(100,1000) if i == (i%10)**3 + (i//10%10)**3 + (i // 100)**3]
print(list1) # 列表解析,通過%與//取整數各個權位的數字。