Python 一行代碼能實(shí)現(xiàn)喪心病狂的功能
手頭有 109 張頭部 CT 的斷層掃描圖片,我打算用這些圖片嘗試頭部的三維重建?;A(chǔ)工作之一,就是要把這些圖片數(shù)據(jù)讀出來(lái),組織成一個(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è)模塊:
import numpy as np from PIL import Image
接下來(lái),我用一行代碼就把 109 張圖片讀到了一個(gè) 109x256x256x4 的 numpy 數(shù)組中,耗時(shí) 172 毫秒:
data = np.stack([np.array(Image.open('head%d.png'%i)) for i in range(109)], axis=0)
通常,上面這一行代碼應(yīng)該寫成這樣:
data = list()
for i in range(109):
img = Image.open('head%d.png'%i)
img = np.array(img)
data.append(img)
data = np.stack(data, axis=0)
我把這些代碼寫成一行,卻毫無(wú)晦澀艱深之感,仍然像詩(shī)歌一樣優(yōu)美、像自然語(yǔ)言一樣通俗!
那一刻,我腦洞大開,很想知道 python 高手們只用一行代碼都能干些什么?當(dāng)然,限定條件是不能引用自定義的模塊,可以使用內(nèi)置模塊或通用的第三方模塊。上網(wǎng)一搜,發(fā)現(xiàn)這個(gè)問(wèn)題好像是 python 的專屬問(wèn)題,其他語(yǔ)言很難用一行代碼做點(diǎn)什么。知乎上有一篇名為《一行 Python 能實(shí)現(xiàn)什么喪心病狂的功能?》的帖子,其鏡像貼只有 java 的和 js 的,點(diǎn)進(jìn)去發(fā)現(xiàn),和 python 的完全不是一個(gè)概念。
整理了一下知乎上這篇文章的內(nèi)容,頗覺(jué)有趣,分享給大家。
1. 一行代碼打印乘法口訣
print('\n'.join([' '.join(["%2s x%2s = %2s"%(j,i,i*j) for j in range(1,i+1)]) for i in range(1,10)]))

2. 一行代碼打印迷宮
print(''.join(__import__('random').choice('\u2571\u2572') for i in range(50*24)))

3. 一行代碼表白愛(ài)情
print('\n'.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. 一行代碼打印小龜龜
print('\n'.join([''.join(['*' if abs((lambda a:lambda z,c,n:a(a,z,c,n))(lambda s,z,c,n:z if n==0 else s(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 使用過(guò)程中用一行代碼實(shí)現(xiàn)過(guò)哪些激動(dòng)人心的功能呢?歡迎留言討論。
相關(guān)文章
openCV入門學(xué)習(xí)基礎(chǔ)教程第二篇
人臉識(shí)別,物體檢測(cè),OpenCV是基石,下面這篇文章主要給大家介紹了關(guān)于openCV入門學(xué)習(xí)基礎(chǔ)教程的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
Python之標(biāo)點(diǎn)符號(hào)string.punctuation的使用
Python的string模塊提供了一個(gè)方便的屬性string.punctuation,其中包含所有ASCII標(biāo)點(diǎn)符號(hào)字符,這使得在處理和識(shí)別字符串中的標(biāo)點(diǎn)符號(hào)時(shí)非常有用,可以通過(guò)簡(jiǎn)單的in關(guān)鍵字來(lái)檢測(cè)字符是否為標(biāo)點(diǎn)2024-09-09
解析pip安裝第三方庫(kù)但PyCharm中卻無(wú)法識(shí)別的問(wèn)題及PyCharm安裝第三方庫(kù)的方法教程
這篇文章主要介紹了解析pip安裝第三方庫(kù)但PyCharm中卻無(wú)法識(shí)別的問(wèn)題及PyCharm安裝第三方庫(kù)的方法教程,本文圖文并茂給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
Spring Boot中使用IntelliJ IDEA插件EasyCode一鍵生成代碼詳細(xì)方法
這篇文章主要介紹了Spring Boot中使用IntelliJ IDEA插件EasyCode一鍵生成代碼詳細(xì)方法,需要的朋友可以參考下2020-03-03
Python人工智能之路 之PyAudio 實(shí)現(xiàn)錄音 自動(dòng)化交互實(shí)現(xiàn)問(wèn)答
關(guān)于音頻, PyAudio 這個(gè)庫(kù), 可以實(shí)現(xiàn)開啟麥克風(fēng)錄音, 可以播放音頻文件等等。文章介紹了如何使用Python第三方庫(kù)PyAudio進(jìn)行麥克風(fēng)錄音然后自動(dòng)播放已經(jīng)合成的語(yǔ)音實(shí)現(xiàn)語(yǔ)音交互回答,需要的朋友可以參考下2019-08-08
Python Scrapy實(shí)戰(zhàn)之古詩(shī)文網(wǎng)的爬取
本文將利用Python中Scrapy框架,實(shí)現(xiàn)爬取古詩(shī)文網(wǎng)上的詩(shī)詞數(shù)據(jù),具體包括詩(shī)詞的標(biāo)題信息。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-05-05

