手頭有 109 張頭部 CT 的斷層掃描圖片,我打算用這些圖片嘗試頭部的三維重建。基礎(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
- 1
- 2
接下來(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
)
- 1
通常,上面這一行代碼應(yīng)該寫(xiě)成這樣:
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
)
- 1
- 2
- 3
- 4
- 5
- 6
我把這些代碼寫(xiě)成一行,卻毫無(wú)晦澀艱深之感,仍然像詩(shī)歌一樣優(yōu)美、像自然語(yǔ)言一樣通俗!
那一刻,我腦洞大開(kāi),很想知道 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
)
]
)
)
- 1
2. 一行代碼打印迷宮
print
(
''
.
join
(
__import__
(
'random'
)
.
choice
(
'\u2571\u2572'
)
for
i
in
range
(
50
*
24
)
)
)
- 1
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
)
]
)
)
- 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
)
]
)
)
- 1
你在 python 使用過(guò)程中用一行代碼實(shí)現(xiàn)過(guò)哪些激動(dòng)人心的功能呢?歡迎留言討論。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

