列表推導(dǎo)式
菜鳥(niǎo)教程曰:
列表推導(dǎo)式提供了從序列創(chuàng)建列表的簡(jiǎn)單途徑糊昙。通常應(yīng)用程序?qū)⒁恍┎僮鲬?yīng)用于某個(gè)序列的每個(gè)元素,用其獲得的結(jié)果作為生成新列表的元素弥激,或者根據(jù)確定的判定條件創(chuàng)建子序列进陡。
每個(gè)列表推導(dǎo)式都在 for 之后跟一個(gè)表達(dá)式,然后有零到多個(gè) for 或 if 子句微服。返回結(jié)果是一個(gè)根據(jù)表達(dá)從其后的 for 和 if 上下文環(huán)境中生成出來(lái)的列表趾疚。
eg.
>>> vec = [2, 4, 6]
>>> [3*x for x in vec]
[6, 12, 18]
我的錯(cuò)誤代碼:
l1 = [1,2,3,4]
l2 = [5,6,7]
minLen = lambda i,j:min(i,j)
print(l1[i]*l2[i] for i in range(minLen(len(l1),len(l2))))
運(yùn)行結(jié)果:
<generator object <genexpr> at 0x00000077F887C830>
這段代碼大概的意思是,返回一個(gè)列表以蕴,這個(gè)列表是按照順序把相同index的兩個(gè)列表的數(shù)字相乘糙麦,因?yàn)閮蓚€(gè)列表長(zhǎng)度不同,所以判斷了長(zhǎng)度丛肮,選擇了短的那個(gè)赡磅。
打印出這個(gè)東西我是很無(wú)語(yǔ)的,這個(gè)結(jié)果讓我很懵逼腾供,后來(lái)發(fā)現(xiàn)是打印的時(shí)候忘了加“[]”仆邓。鲜滩。伴鳖。(打印出來(lái)這個(gè)我是不知道是什么以及為什么,只是改了錯(cuò)誤)
正確代碼:
l1 = [1,2,3,4]
l2 = [5,6,7]
minLen = lambda i,j:min(i,j)
print([l1[i]*l2[i] for i in range(minLen(len(l1),len(l2)))])
還是沒(méi)有習(xí)慣Python