您好,登錄后才能下訂單哦!
今天小編給大家分享一下Python如何實(shí)現(xiàn)列表生成式的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。
1. 方法一是循環(huán):
L = [] for x in range(1, 11): L.append(x * x) print(L)
但是循環(huán)太繁瑣,而列表生成式則可以用一行語(yǔ)句代替循環(huán)生成上面的list:
print([x * x for x in range(1, 11)])
寫(xiě)列表生成式時(shí),把要生成的元素x * x放到前面,后面跟for循環(huán),就可以把list創(chuàng)建出來(lái),十分有用,多寫(xiě)幾次,很快就可以熟悉這種語(yǔ)法。
for循環(huán)后面還可以加上if判斷,這樣就可以篩選出僅偶數(shù)的平方:
for x in range(1, 11): L.append(x * x) print([x * x for x in range(1, 11) if x % 2 == 0])
2. 使用兩層循環(huán),可以生成全排列
L = [] for x in range(1, 11): L.append(x * x) print( [m + n for m in 'ABC' for n in 'XYZ'])
三層和三層以上的循環(huán)就很少用到了。
3. 運(yùn)用列表生成式,可以寫(xiě)出非常簡(jiǎn)潔的代碼。
例如,列出當(dāng)前目錄下的所有文件和目錄名,可以通過(guò)一行代碼實(shí)現(xiàn):
import os # 導(dǎo)入os模塊,模塊的概念后面講到 print([d for d in os.listdir('.')]) # os.listdir可以列出文件和目錄
for循環(huán)其實(shí)可以同時(shí)使用兩個(gè)甚至多個(gè)變量,s比如dict的items()可以同時(shí)迭代key和value:
d = {'x': 'A', 'y': 'B', 'z': 'C'} for k, v in d.items(): print(k, '=', v)
因此,列表生成式也可以使用兩個(gè)變量來(lái)生成list:
d = {'x': 'A', 'y': 'B', 'z': 'C' } print([k + '=' + v for k, v in d.items()]
最后把一個(gè)list中所有的字符串變成小寫(xiě):
L = ['Hello', 'World', 'IBM', 'Apple'] print([s.lower() for s in L])
如果list中既包含字符串,又包含整數(shù),由于非字符串類(lèi)型沒(méi)有l(wèi)ower()方法,所以列表生成式會(huì)報(bào)錯(cuò):
L = ['Hello', 'World', 18, 'Apple', None] print([s.lower() for s in L])
使用內(nèi)建的isinstance函數(shù)可以判斷一個(gè)變量是不是字符串:
x = 'abc' y = 123 print(isinstance(x, str)) print(isinstance(y, str))
請(qǐng)修改列表生成式,通過(guò)添加if語(yǔ)句保證列表生成式能正確地執(zhí)行。
# -*- coding: utf-8 -*- L1 = ['Hello', 'World', 18, 'Apple', None] L2=??? # 期待輸出: ['hello', 'world', 'apple'] print(L2)
練習(xí)參考代碼 :
L2 =[s.lower() for s in L1 if isinstance(s, str) ]
運(yùn)行結(jié)果:
注:
運(yùn)用列表生成式,可以快速生成list,可以通過(guò)一個(gè)list推導(dǎo)出另一個(gè)list,而代碼卻十分簡(jiǎn)潔。
以上就是“Python如何實(shí)現(xiàn)列表生成式”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。