国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 红原县| 大邑县| 兴宁市| 克东县| 安吉县| 高安市| 江津市| 全椒县| 临武县| 扶绥县| 临泽县| 徐闻县| 卓尼县| 山丹县| 仙游县| 齐齐哈尔市| 德令哈市| 台东县| 滨州市| 库伦旗| 大港区| 寻甸| 邓州市| 弥勒县| 军事| 安徽省| 遂宁市| 都安| 乌拉特前旗| 农安县| 江山市| 固阳县| 游戏| 金堂县| 台东县| 东宁县| 莱州市| 英德市| 中方县| 衡阳市| 施甸县|