Python高級用法(一)之列表推導(list comprehensions)

python中有很多高級用法,掌握高級用法會讓我們的代碼更加簡單,寫起來更加輕鬆。
下面介紹第一個高級用法就是列表推導,作用就是由一個列表生成另外一個列表。

初體驗

任務1:對於一個元素都是數值的列表,求出列表中每個元素平方組成的新列表。
一般做法:

x = [1,2,3,4,5,6,7,8,9]
for i in range(len(x)):
    x[i] = x[i]**2
print (x)
#[1, 4, 9, 16, 25, 36, 49, 64, 81]

列表推導做法:

x = [1,2,3,4,5,6,7,8,9]
x = [b**2 for b in x]
print (x)

這樣不用循環,一行搞定。

進階版

任務2: 對一一個元素都是數值的列表,求出列表中是偶數的元素的平方組成的新列表,並輸出:

x = [1,2,3,4,5,6,7,8,9]
for i in range(len(x)):
    if i%2==0:
        x[i] = x[i]**2

列表推導做法:

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

不僅可以在裏面寫循環,還可以加上判斷。

高級擴展

上面就是列表生成的介紹,下面看看一些稍微複雜一點的用法:
將函數傳進行,這樣可以想怎麼用怎麼用了。

def f(b):
    b = b**2
    b = b-1
    b = b**2
    return b
x = [1,2,3,4,5,6,7,8,9]
x = [f(b) for b in x if b%2==0]
print (x)

兩個循環:

x = ["abc","def","ghi"]
x = [b for a in x for b in a]
print (x)

雙循環加判斷:

x = ["abc","def","aghi"]
x = [b for a in x for b in a if b=="a"]
print (x)

另外一種雙循環:

x = [(x,y) for x in [1,2,3] for y in [4,5,6] if x!=y]
print (x)

大家如果還有什麼有趣的用法可以自己嘗試一下,也可評論交流,歡迎大家關注我,後續會繼續更新一些python高級用法!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章