python之列表生成式


 列表生成式即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。

一般方法:

list1 = []
for i in range(1,11):
    list1.append(i*i)

列表生成式:

list1 = [i*i for i in range(1,11)]

2.接着上一個需求,要求返回的序列中不存在偶數項:

一般方法:

list = []
for i in range(1,11):
    if (i*i) % 2 !=0:  
        list.append(i*i)

列表生成式:

list2 = [i*i for i in range(1,11) if (i*i) %2 !=0 ]

 

3. 字符串s1 ='ABC',字符串 s2 = '123',要求:生成序列 A1 A2 A3 B1 B2 B3 C1 C2 C3

一般方法:

s1='abc'
s2='123'
list = []
for i in s1:
    for o in s2:
        list.append(i+o)
print(list)

列表生成式:

s1='abc'
s2='123'
list2 = [i+o for i in s1 for o in s2]

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

一般方法:

list = [[1,2,3],[4,5,6],[7,8,9]]
list2 = []
for b in list:
  for a in b:
        if a % 2 == 0:
            list2.append(a)

列表生成式:

list = [[1,2,3],[4,5,6],[7,8,9]]
list2 = [a for b in list for a in b if a %2 ==0]
print(list2)

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

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

import math
print([math.pi *r *r] for r in range(2,11,2))

方法二:  定義一個求圓面積的函數,然后在列表生成式中直接調用函數,從而求出序列中符合條件的半徑的面積:

import math
def sour(r):
    res = math.pi*r*r
    return res
print([sour(r)*r*r for r in range(2,11,2)])

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM