1. 程式人生 > >python初學一(列表、集合、字典推導式,又稱為解析)

python初學一(列表、集合、字典推導式,又稱為解析)

一、列表與集合推導式(解析):列表解析不是函式,區分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)    # 列表解析,通過%與//取整數各個權位的數字。