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高級用法!