列表生成式即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 但如果要生成...