python列表生成式

2021-10-03 06:58:15 字數 1213 閱讀 7695

基礎知識果然不複習就會忘,今天看到一行**

letter_codes = [ord(ch) for ch in 'wasdrqwasdrq']

一直在想for前面加這個函式是要幹啥,經過查詢之後,原來是列表生成式。此處簡要介紹列表生成式

1.

[x *x for x in range(1,11)]
運算結果是

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
原理是:將range包含的數字(1~10)放到x*x中得到結果

2.利用if篩選

[x * x for x in range(1,11) if x%2==0]
運算結果是:

[4, 16, 36, 64, 100]
原理是:將range包含的數字進行篩選,去掉非偶數之後放到x*x得到結果 

3.套用雙層迴圈,生成全排列

[m + n for m in 'abc' for n in 'xyz']
運算結果:

['ax', 'ay', 'az', 'bx', 'by', 'bz', 'cx', 'cy', 'cz']
原理:和普通雙層for迴圈執行方式一致

4.使用兩個變數生成列表

d=

[k+'='+v for k,v in d.items()]

執行結果是:

['a=x','b=y','c=z']
for迴圈可以使用兩個或多個變數

5.if else

在for前面的if需要與else配對才不會報錯,若if在for後面,是篩選條件,不能帶else

[x if x%2==0 for x in range(1,11)]
這行**會報錯,因為x若不為偶數則無法處理x,所以必須加else

[x if x%2==0 else -x for x in range(1,11)]
執行結果是:

[-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]
原理:range範圍內的數字先判斷是偶數的話賦值給x,若不是偶數,寫為-x傳給列表 

Python 列表生成式

列表生成式即list comprehensions,是python內建的非常簡單卻強大的可以用來建立list的生成式。舉個例子,要生成list 1,2,3,4,5,6,7,8,9,10 可以用list range 1,11 list range 1,11 1,2,3,4,5,6,7,8,9,10 但...

python列表生成式

全都是重點!列表生成式即listcomprehensions,是python內建的非常簡單卻強大的可以用來建立list的生成式。舉個例子,要生成list 1,2,3,4,5,6,7,8,9,10 可以用range 1,11 range 1,11 1,2,3,4,5,6,7,8,9,10 但如果要生成...

python列表生成式

全都是重點!列表生成式即listcomprehensions,是python內建的非常簡單卻強大的可以用來建立list的生成式。舉個例子,要生成list 1,2,3,4,5,6,7,8,9,10 可以用range 1,11 range 1,11 1,2,3,4,5,6,7,8,9,10 但如果要生成...