列表生成式

2021-09-29 19:14:04 字數 1317 閱讀 3282

乙個例子:

計算列表中的每個元素的長度,然後將長度新增到元素內容後面,生成乙個新的列表

list_text = ['a','bb','ccc','a1']

list_new = [i + str(len(i)) for i in list_text]

print(list_new);

這是乙個列表生成式的典型應用,本來對於列表中的每乙個元素,如果用迴圈來實現這個功能,將會額外增加好多行**

我們可以這樣實現乙個平方數表

squares = list(map(lambda x:x**2, range(10)))

也可以這樣實現

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

顯然後一種方式更容易理解

列表生成式也可以寫的很複雜

[(x,y) for x in [1,2,3] for y in [3,1,4] if x != y]

實際上,列表生成式這個概念在python鐘已經被泛化了用剛剛的方法,不僅可以生成列表,還可以生成dict和set型別的資料結構

s = "hello world"

comp =

上面用列表生成式的方法生成了乙個集合型別,集合可以理解成只儲存key,沒有value,所以set是不會有重複值(因為dict型別的key不允許用重複的)

如果你想要乙個key對映多個value,可以考慮value採用list型別

嚴格來說,字典生成式的語法是這樣的

注意,這裡有乙個zip函式可以把可迭代物件作為引數,將對相物件對應的元素打包成乙個個元組,然後返回又這些元組組成的列表

s = "hello world"

dict_comp =

如果對zip函式不是很熟悉的話

可以看看下面的**輸出

s = "hello world"

for k, v in zip(range(9), s):

print(k, v)

指定目錄下查詢指定字尾的所有檔案

import os

def list_files_with_ext(path, ext):

return [file for f in os.listdir(path) if f.endswith(ext)]

列表生成式

列表生成式 1生成列表 要生成list 1,2,3,4,5,6,7,8,9,10 我們可以用 range 1,11 range 1,11 1,2,3,4,5,6,7,8,9,10 但如果要生成 1x1,2x2,3x3,10x10 怎麼做?方法一是迴圈 l for x in range 1,11 l ...

列表生成式

列表生成式即list comprehensions,是python內建的非常簡單卻強大的可以用來建立list的生成式。舉個例子,要生成list 1,2,3,4,5,6,7,8,9,10 可以用list range 1,11 list range 1,11 1,2,3,4,5,6,7,8,9,10 但...

列表生成式

列表生成式,是 python 內建的一種極其強大的生成list的表示式。如果要生成乙個列表,可以用range 1,10 range 1,4 1,2,3 生成 1 1 2 2 3 3 10 10 怎麼做呢?可以使用迴圈 l for x in range 1,10 l 1,4,9,16,25,36,49...