python鍊錶推導式

2021-08-28 16:24:36 字數 1362 閱讀 1555

##鍊錶推導式

鍊錶推導式提供了乙個建立鍊錶的簡單途徑,無需使用 map(), filter() 以及 lambda。返回鍊錶的定義通常要比建立這些鍊錶更清晰。每乙個鍊錶推導式包括在乙個for語句之後的表示式,零或多個for或if語句。返回值是由for或if子句之後的表示式得到的元素組成的鍊錶。如果想要得到乙個元組,必須要加上括號。

>>> freshfruit = [' banana', ' loganberry ', 'passion fruit ']

>>> [weapon.strip() for weapon in freshfruit]

['banana', 'loganberry', 'passion fruit']

>>> vec = [2, 4, 6]

>>> [3*x for x in vec]

[6, 12, 18]

>>> [3*x for x in vec if x > 3]

[12, 18]

>>> [3*x for x in vec if x < 2]

>>> [[x,x**2] for x in vec]

[[2, 4], [4, 16], [6, 36]]

>>> [x, x**2 for x in vec] # error - parens required for tuples

file "", line 1, in ?

[x, x**2 for x in vec]

^syntaxerror: invalid syntax

>>> [(x, x**2) for x in vec]

[(2, 4), (4, 16), (6, 36)]

>>> vec1 = [2, 4, 6]

>>> vec2 = [4, 3, -9]

>>> [x*y for x in vec1 for y in vec2]

[8, 6, -18, 16, 12, -36, 24, 18, -54]

>>> [x+y for x in vec1 for y in vec2]

[6, 5, -7, 8, 7, -5, 10, 9, -3]

>>> [vec1[i]*vec2[i] for i in range(len(vec1))]

[8, 12, -54]

為使鍊錶推導式匹配for迴圈的行為,可以在推導之外保留迴圈變數:

>>> x = 100 # this gets overwritten

>>> [x**3 for x in range(5)]

[0, 1, 8, 27, 64]

>>> x # the final value for range(5)

python 鍊錶推導式

鍊錶推導式無非是為了生成鍊錶,然後返回該鍊錶值為前面所使用。a 1,2 4,5 7,8 b for i in a 0 print b 等價於 x for i in a 0 print x 結果 1 在寫dp題目的時候,總是需要使用如下方式來生成初始矩陣 n 10 生成n個0 matrix 0 for...

鍊錶推導式

生成鍊錶很簡單的一種辦法就是鍊錶推導式,不僅容易看懂,還很好用 鍊錶表示式在for語句前面,for後面就是對引數的限定。for yyy 必須要有方括號表示是鍊錶 表示鍊錶,yyy限定 中引數 例1 num 1,2,3,4,5 result x 2 for x in num print result ...

python學習筆記之鍊錶推導式

使用鏈式推導式可以高效的進行資料處理,具體示例如下。在找出文字中最長詞彙程式中,第一種方法如下 找出文字中最長的詞 text nltk.corpus.gutenberg.words milton paradise.txt 生成整個文字詞彙鍊錶 longest for word in text ifl...