Python面試題之列表推導式

2022-05-10 01:08:53 字數 1777 閱讀 3136

生成如下列表

[[0,0,0,0,0,],[0,1,2,3,4,],[0,2,4,6,8,],[0,3,6,9,12,]]

(考察列表生成式和基本邏輯推理)

方法1:

list1 =

forin range(4):

temp =

for j in range(5):

print(list1)

方法2:

list1 =[[ i*j for j in range(5)] for i in range(4)]

print(list1)

列表推導式是python中快速建立列表的一種方式。

之前我們要建立(python3中)乙個元素是0~9的列表,我們可能會像下面這麼寫:

>>>list(range(10))[

0,1,2,3,4,5,6,7,8,9]

這麼寫沒毛病,但是如果要稍微複雜一點的需求可能就有點棘手了,比如

把列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]中的每個元素都加100,生成乙個新列表,這要怎麼寫呢?

一級學徒可能會這麼寫:

>>>list1 = [0,1,2,3,4,5,6,7,8,9

]>>>list2 =

>>>for i in

list1:

)...

>>>list2

[100,101,102,103,104,105,106,107,108,109]

二級學徒可能會這麼寫:

>>>list2 = list(map(lambda x:x+100

,list1))

>>>list2

[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]

高階學徒可能會這麼寫:

>>>list2 = [i+100 for i in

list1]

>>>listt2

[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]

好啦,這第三種寫法就是今天我們要講的列表推導式。

接下來我們看一下,列表推導式的語法規範是什麼,看下圖:

>>>list1 = [1,2,3]

>>>[x*10 for x in

list1]

[10,20,30]

>>>list1 = [1,2,3]

>>>[x*10 for x in list1 if x%2!=0] #

把list1中的奇數乘以10

[10,30]

3.多個輸入序列的列表推導式

list1 = ["

a","

b","c"

]list2 = ["

x","

y","z"

]>>>[x+y for x in list1 for y in

list2]['

ax', '

ay', '

az', '

bx', '

by', '

bz', '

cx', '

cy', '

cz']

注意:使用列表推導式生成的列表雖然十分方便,但是它生成的列表的所有元素會直接在記憶體中生成,當你要生成的列表元素個數十分巨大的時候,要注意小心你的記憶體。

Python之列表推導式

如下是python官方文件中列表推導式部分的譯文,筆者對於該部分也是初學,只能從官方文件學起了。有不合適的地方還望指正,謝謝。python官網列表推導式部分 一 列表推導式 列表推導式提供了一種建立list的簡便方法。應用程式建立列表時,列表中的元素 於其他序列 可迭代物件或建立的乙個滿足一定條件的...

python之列表推導式篇

商品打折 python列表推導式 打折 newlistname expression for in var listname 大於 newlistname var for var in listname if condition newlistname 新生成的列表名稱 expression 表示式...

Python之 列表推導式與字典推導式

四 列表推導式與字典推導式 在 python 中推導式是一種非常 pythonic 的知識,本篇將解答列表推導式與字典推導式相關的技術知識。4.1 列表推導式 列表推導式可以利用列表,元組,字典,集合等資料型別,快速的生成乙個特定需要的列表。語法格式如下 表示式 for 迭代變數 in 可迭代物件 ...