国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

通過代碼實例展示Python中列表生成式的用法

2020-02-23 00:29:26
字體:
供稿:網(wǎng)友

1 平方列表

如果你想創(chuàng)建一個包含1到10的平方的列表,你可以這樣做:

squares = []for x in range(10): squares.append(x**2)

 

這是一個簡單的例子,但是使用列表生成式可以更簡潔地創(chuàng)建這個列表。

squares = [x**2 for x in range(10)]

這個最簡單的列表生成式由方括號開始,方括號內(nèi)部先是一個表達式,其后跟著一個for語句。列表生成式總是返回一個列表。

2 整除3的數(shù)字列表

通常,你可能這樣寫:

numbers = []for x in range(100): if x % 3 == 0:  numbers.append(x)

你可以在列表生成式里包含一個if語句,來有條件地為列表添加項。為了創(chuàng)建一個包含0到100間能被3整除的數(shù)字列表,可以使用列表推導(dǎo)式:

numbers = [x for x in range(100) if x % 3 == 0]

3 找出質(zhì)數(shù)

這通常要使用好幾行代碼來實現(xiàn)。

noprimes = []for i in range(2, 8): for j in range(i*2, 50, i):  noprimes.append(j)primes = []for x in range(2, 50): if x not in noprimes:  primes.append(x)

不過,你可以使用兩個列表生成式來簡化代碼。

noprimes = [j for i in range(2, 8) for j in range(i*2, 50, i)]primes = [x for x in range(2, 50) if x not in noprimes]

第一行代碼在一個列表生成式里使用了多層for循環(huán)。第一個循環(huán)是外部循環(huán),第二個循環(huán)是是內(nèi)部循環(huán)。為了找到質(zhì)數(shù),我們首先找到一個非質(zhì)數(shù)的列表。通過找出2-7的倍數(shù)來產(chǎn)生這個非質(zhì)數(shù)列表。然后我們循環(huán)遍歷數(shù)字并查看每個數(shù)字是否在非質(zhì)數(shù)列表。

修正:正如reddit上的shoyer指出的,使用集合(set)來查找noprimes(代碼里的屬性參數(shù),譯者注)效率更高。由于noprimes應(yīng)該只包含唯一的值,并且我們頻繁地去檢查一個值是否存在,所以我們應(yīng)該使用集合。集合的使用語法和列表的使用語法類似,所以我們可以這樣使用:

noprimes = set(j for i in range(2, 8) for j in range(i*2, 50, i))primes = [x for x in range(2, 50) if x not in noprimes]

4 嵌套列表降維

假設(shè)你有一個列表的列表(列表里包含列表)或者一個矩陣,

matrix = [[0,1,2,3], [4,5,6,7], [8,9,10,11]]

并且你想把它降維到一個一維列表。你可以這樣做:

flattened = []for row in matrix: for i in row:  flattened.append(i)

使用列表生成式:

flattened = [i for row in matrix for i in row]

這使用了兩個for循環(huán)去迭代整個矩陣。外層(第一個)循環(huán)按行迭代,內(nèi)部(第二個)循環(huán)對該行的每個項進行迭代。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 钟山县| 沾化县| 建平县| 永宁县| 勐海县| 西吉县| 石楼县| 区。| 文登市| 云霄县| 饶河县| 长丰县| 丹东市| 高邮市| 栾城县| 桐梓县| 城固县| 牙克石市| 平昌县| 微博| 麻阳| 涞源县| 正宁县| 泾阳县| 城口县| 德清县| 双辽市| 财经| 马尔康县| 东光县| 眉山市| 宿迁市| 精河县| 昌图县| 罗源县| 黑龙江省| 扎赉特旗| 洪泽县| 永顺县| 双柏县| 贵阳市|