天天看點

python學習第九天 -- 清單生産式

說說python特有的清單生成式。python的清單的生成式主要用法是什麼?

用法就是可以使用簡潔的代碼生成出list集合。

直接用代碼舉了例子:

利用清單生成式生成清單[1x2,3x4,5x6,7x8,....,99x100]

>>> [x*(x+1) for x in range(1,100,2)]
      

解析:range(1,100,2) 從1~100數字中每隔2個數字取元素。

之前在上一節講疊代的時候,有提供zip()函數,将兩個list合并成一個list。索引生成上面的清單也可以這麼寫:

>>>print [x * y for x,y in zip(range(1,101,2),range(2,101,2))]      

也可以針對dict疊代生成清單生成式。來看下面的例子:

>>> d = {'A':67,'B':90,'C':87}
>>> print [(name,score) for name ,score in d.items()]
[('A', 67), ('C', 87), ('B', 90)]      

針對這種清單生成式還可以加上條件過濾。來看下面的例子:

>>> [x for x in range(1,11)if x%2 == 0]
[2, 4, 6, 8, 10]      

學過其他程式設計語言的人都知道,循環是可以嵌套的。在python清單生成式中,也可以嵌套循環。

來看下面的例子:利用三層for循環的清單生成式,找出對稱的3位數。例如121就是對稱數。

>>>print [i*100+j*10+k for i in range(1,10) for j in range(0,10) for k in range(1,10) if i==k]      

繼續閱讀