手頭有 109 張頭部 CT 的斷層掃描圖片,我打算用這些圖片嘗試頭部的三維重建?;A(chǔ)工作之一,就是要把這些圖片數(shù)據(jù)讀出來,組織成一個(gè)三維的數(shù)據(jù)結(jié)構(gòu)(實(shí)際上是四維的,因?yàn)槊總€(gè)像素有 RGBA 四個(gè)通道)。
這個(gè)數(shù)據(jù)結(jié)構(gòu),自然是 numpy 的 ndarray 對(duì)象,讀取圖像文件我習(xí)慣使用 PIL。因此,需要導(dǎo)入兩個(gè)模塊:
1importnumpyasnp 2fromPILimportImage
接下來,我用一行代碼就把 109 張圖片讀到了一個(gè) 109x256x256x4 的 numpy 數(shù)組中,耗時(shí) 172 毫秒:
1data=np.stack([np.array(Image.open('head%d.png'%i))foriinrange(109)],axis=0)
通常,上面這一行代碼應(yīng)該寫成這樣:
1data=list() 2foriinrange(109): 3img=Image.open('head%d.png'%i) 4img=np.array(img) 5data.append(img) 6data=np.stack(data,axis=0)
我把這些代碼寫成一行,卻毫無晦澀艱深之感,仍然像詩歌一樣優(yōu)美、像自然語言一樣通俗!
那一刻,我腦洞大開,很想知道 python 高手們只用一行代碼都能干些什么?當(dāng)然,限定條件是不能引用自定義的模塊,可以使用內(nèi)置模塊或通用的第三方模塊。上網(wǎng)一搜,發(fā)現(xiàn)這個(gè)問題好像是 python 的專屬問題,其他語言很難用一行代碼做點(diǎn)什么。知乎上有一篇名為《一行 Python 能實(shí)現(xiàn)什么喪心病狂的功能?》(https://www.zhihu.com/question/37046157)的帖子,其鏡像貼只有 java 的和 js 的,點(diǎn)進(jìn)去發(fā)現(xiàn),和 python 的完全不是一個(gè)概念。
整理了一下知乎上這篇文章的內(nèi)容,頗覺有趣,分享給大家。
1. 一行代碼打印乘法口訣
1print(' '.join([''.join(["%2sx%2s=%2s"%(j,i,i*j)forjinrange(1,i+1)])foriinrange(1,10)]))
2. 一行代碼打印迷宮
1print(''.join(__import__('random').choice('u2571u2572')foriinrange(50*24)))
3. 一行代碼表白愛情
1print(' '.join([''.join([('Love'[(x-y)%len('Love')]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=?0else'?')?for?x?in?range(-30,?30)])?for?y?in?range(30,?-30,?-1)]))
4. 一行代碼打印小龜龜
1print(' '.join([''.join(['*'ifabs((lambdaa:lambdaz,c,n:a(a,z,c,n))(lambdas,z,c,n:zifn==0elses(s,z*z+c,c,n-1))(0,0.02*x+0.05j*y,40))<2?else?'?'?for?x?in?range(-80,20)])?for?y?in?range(-20,20)]))
你在 Python 使用過程中用一行代碼實(shí)現(xiàn)過哪些激動(dòng)人心的功能呢?歡迎留言討論。
-
代碼
+關(guān)注
關(guān)注
30文章
4722瀏覽量
68234 -
python
+關(guān)注
關(guān)注
55文章
4767瀏覽量
84375
原文標(biāo)題:一行Python代碼能實(shí)現(xiàn)什么喪心病狂的功能?
文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論