python 列表生成式

2021-09-03 07:04:59 字數 2664 閱讀 7941

列表生成式即list    comprehensions,是python內建的非常簡單卻強大的可以用來建立list的生成式。

列表生成式的結構是在乙個中括號裡包含乙個表示式,然後是乙個for語句,然後是0個或多個for或者if語句。列表表示式可以是任意的,意思是你可以在列表中放入任意型別的物件。返回結果將是乙個新的列表,在這個以if和for語句為上下文的表示式執行完成之後產生。

variable    =    [out_exp    for    out_exp    in    input_list    if    out_exp    ==    2]
下面通過例題來對列表生成式進行深入的理解。

1. 生成乙個列表,列表元素分別為 [1*1,2*2,3*3……n*n],假設n = 10。

## 若用一般方法實現**如下:

## 若用列表生成式:

但是結果一模一樣,如下圖:

## 若用列表生成式**如下:

## 其實將上面的**翻譯一下,就和下面**乙個意思:

執行結果如下:

3. 字串s1 ='abc',字串 s2 = '123',要求:生成序列 a1 a2 a3 b1 b2 b3 c1 c2 c3

## 初學者思維:

## python老手思維:

執行結果是相同的:

4. 將3x3的矩陣li1轉化成乙個陣列(列表),且使該陣列中僅僅包含偶數:

li1 =[

[1, 2, 3],

[4, 5, 6],

[7, 8, 9]

]# 採用列表生成式的**如下:

# 下面**這種思維就有點像用c語言程式設計了,既然python中有簡單的方法,我們最好就用簡單的方法:

執行結果如下:

5. 找出1-10之間所有的偶數,並且返回乙個列表(這個列表中含以這個偶數為半徑的圓的面積)

方法一:使用列表生成式,計算圓的面積要用到圓周率引數,需要匯入math模組:

方法二:  定義乙個求圓面積的函式,然後在列表生成式中直接呼叫函式,從而求出序列中符合條件的半徑的面積:

執行結果:

6. 找出1-100之間的所有的質數:

## 說明:列表生成式和函式的結合使用,應用是很廣泛的:

第一步:從終端接收乙個輸入的數:

num1 = int(input('輸入3第二步:找出接收的數的範圍以內的質數:

def zhishu(f):

if f == 1:

return false

for j in range(2, f):

res = f % j

if res == 0:

return false

else:

return true

list1 = [i for i in range(2, num1+1) if zhishu(i)]

第三步: 求出符合題目條件的質數對的數量:

方法一:

n = 0

for n in list1:

for k in list1:

if n + k == num1 and n <= k: ### 寫到這時,馬同學思維是解決重複,我想著怎樣讓不重複

n += 1

print(n)

方法二:

n = 0

for item in list1: ### 老師的思維

if 10-item in list1 and item <= 10-item:

n += 1

print(n)

明顯第二種方法更簡單,而且思維也不是太難想。 但是為什麼就想不到了,因為對題目理解的太淺薄了,對題目這個問題的條件沒有相互聯絡,對題目過程沒有做深入的演練,導致只能用很low的思維去解決問題。

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 但如果要生成...