一行 Python 代碼能實現什麼喪心病狂的功能? | CSDN博文精選

2021-03-02 CSDN

作者 | 許文武

責編 | 郭芮

出品 | CSDN 博客

手頭有 109 張頭部 CT 的斷層掃描圖片,我打算用這些圖片嘗試頭部的三維重建。基礎工作之一,就是要把這些圖片數據讀出來,組織成一個三維的數據結構(實際上是四維的,因為每個像素有 RGBA 四個通道)。

這個數據結構,自然是 numpy 的 ndarray 對象,讀取圖像文件我習慣使用 PIL。因此,需要導入兩個模塊:

import numpy as np
from PIL import Image

接下來,我用一行代碼就把 109 張圖片讀到了一個 109x256x256x4 的 numpy 數組中,耗時 172 毫秒:

data = np.stack([np.array(Image.open('head%d.png'%i)) for i in range(109)], axis=0)

通常,上面這一行代碼應該寫成這樣:

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)

我把這些代碼寫成一行,卻毫無晦澀艱深之感,仍然像詩歌一樣優美、像自然語言一樣通俗!

那一刻,我腦洞大開,很想知道 Python 高手們只用一行代碼都能幹些什麼?當然,限定條件是不能引用自定義的模塊,可以使用內置模塊或通用的第三方模塊。上網一搜,發現這個問題好像是 Python 的專屬問題,其他語言很難用一行代碼做點什麼。知乎上有一篇名為《一行 Python 能實現什麼喪心病狂的功能?》(https://www.zhihu.com/question/37046157)的帖子,其鏡像貼只有 Java 的和 JS 的,點進去發現,和 Python 的完全不是一個概念。

整理了一下知乎上這篇文章的內容,頗覺有趣,分享給大家。

一行代碼列印乘法口訣


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)]))

 一行代碼列印迷宮


print(''.join(__import__('random').choice('\u2571\u2572') for i in range(50*24)))

一行代碼表白愛情


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)]))!

一行代碼列印小龜龜

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 使用過程中用一行代碼實現過哪些激動人心的功能呢?歡迎留言討論。

作者:許文武,博客暱稱「天元浪子」,本文首發於作者CSDN博客https://blog.csdn.net/xufive/article/details/96475103。

【End】

 熱 文 推 薦 

☞全球 JavaScript 開發者薪酬揭曉,你拖後腿了嗎?

☞性能比 GPU 高 100 倍!首款可編程憶阻器 AI 計算機面世

☞中國第一程式設計師傳

☞搶飯碗?這位 05 後開發三款小程序!

☞非科班出身程式設計師,如何超越科班程式設計師?

☞344億天價罰單也救不了Libra!

☞面試官問我:你們的資料庫是怎麼架構的?

☞10分鐘學會用Pandas做多層級索引

☞江湖又現中科大少年班的傳說

☞中國第一程式設計師,微軟得不到他就要毀了他!

點擊閱讀原文,輸入關鍵詞,即可搜索您想要的 CSDN 文章。

相關焦點

  • 一行Python 代碼能實現什麼喪心病狂的功能?|CSDN博文精選
    (109)], axis=0)通常,上面這一行代碼應該寫成這樣: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)我把這些代碼寫成一行,
  • 一行Python代碼能實現什麼喪心病狂的功能?
    (img)6data = np.stack(data, axis=0)我把這些代碼寫成一行,卻毫無晦澀艱深之感,仍然像詩歌一樣優美、像自然語言一樣通俗!那一刻,我腦洞大開,很想知道 python 高手們只用一行代碼都能幹些什麼?當然,限定條件是不能引用自定義的模塊,可以使用內置模塊或通用的第三方模塊。上網一搜,發現這個問題好像是 python 的專屬問題,其他語言很難用一行代碼做點什麼。知乎上有一篇名為《一行 Python 能實現什麼喪心病狂的功能?》
  • 一行Python 代碼能實現這麼多喪心病狂的功能?
    最近看知乎上有一篇名為《一行 Python 能實現什麼喪心病狂的功能?》(https://www.zhihu.com/question/37046157)的帖子,點進去發現一行Python代碼可以做這麼多喪心病狂的功能!整理了一下知乎上這篇文章的內容,頗覺有趣,分享給大家。
  • 基於 Tensorflow 輕鬆實現 XOR 運算!| CSDN 博文精選
    在計算機早期發展中,邏輯運算廣泛應用於電子管中,這一點如果大家學習過微機原理應該會比較熟悉,那麼在神經網絡中如何實現它呢,早先我們使用的是感知機,可理解為單層神經網絡,只有輸入層和輸出層(在吳恩達老師的系列教程中曾提到過這一點,關於神經網絡的層數,至今仍有異議,就是說神經網絡的層數到底包不包括輸入層,現今多數認定是不包括的,我們常說的N層神經網絡指的是隱藏層+輸出層),但是感知機是無法實現XOR運算的
  • 用一行python代碼輕鬆解決,沒想到它這麼強
    python無所不能,是python之父GuidovanRossum的一個朋友說的。而python有多無所不能呢?下面羽憶教程為你展示一行python代碼可以做到輸出九九乘法表,甚至更多喪心病狂的事情,用python一行代碼統統搞定。
  • 不懂NumPy 算什麼 Python 程式設計師?|CSDN 博文精選
    和 python 數組相比,numpy 數組的方法功能更強大,執行效率更高,代碼更簡潔。然而,以上的差異並沒有真正體現出 ndarray 的優勢之所在,ndarray 的精髓在於 numpy 的兩大特徵:矢量化(vectorization)和廣播(broadcast)。矢量化可以理解為代碼中沒有顯式的循環、索引等,廣播可以理解為隱式地對每個元素實施操作。
  • 一行代碼實現Python並行處理
    worker = Consumer(queue)        worker.start()        workers.append(worker)    return workersif __name__ == '__main__':    Producer()這段代碼能正確的運行
  • Python一行代碼,能玩這麼多童年的遊戲?
    來源 | 早起 Python責編 | Carol封圖 | CSDN 下載自視覺中國兒童節就要來了,雖然禿頭程式設計師沒有頭髮,但是童心還是一直都在的,今天就分享一個私藏的GitHub項目——free-python-games,一行代碼就能進入使用Python開發的小遊戲快樂玩耍!
  • 致Python 初學者們! - CSDN
    本文以及後續的文章(https://blog.csdn.net/xufive/category_9506563.html)正是為了幫助像我當年一樣困惑的 Python 初學者走出困境、快速成長。希望我的經驗能真正幫到你們。明確學習目標,不急於求成,不好高騖遠當下是一個喧囂、浮躁的時代。
  • 慢步python,說說import,引用功能代碼(功能庫、py文件代碼)
    今天想說說importimport是python語言的保留字,它能實現引用當前程序之外已有的功能代碼。python語言像積木,你可以根據你想要的功能,編寫一系列的代碼。比如筆者之前編寫的《word文檔標題置換》。
  • 一行代碼能做什麼?看到最後一個我終於忍不住……
    技術能力的提升需要不斷的學習和實踐,面對一行行枯燥的代碼,做出有趣的事情,更能增加學習的興趣和樂趣。那一行python代碼能做出什麼有趣的東西?C/C++有什麼趣味設計?有哪些趣味的Scratch小遊戲?
  • 科普文,python注釋,在代碼中對代碼功能進行解釋的標註性文字
    提高代碼的可讀性,需要提供對代碼的注釋。 python注釋,主要作用在代碼中,對代碼功能進行解釋,是一種標註性文字。一般情況下分成三類,單行注釋、多行注釋、中文聲明注釋。一、先說單行注釋!如圖所示!分為兩種情況。1、單行注釋放在要注釋代碼的前一行。2、注釋放在代碼右側。
  • 運用sklearn進行線性判別分析(LDA)代碼實現
    基於sklearn的線性判別分析(LDA)代碼實現一、前言及回顧本文記錄使用sklearn庫實現有監督的數據降維技術——線性判別分析(LDA)。在上一篇LDA線性判別分析原理及python應用(葡萄酒案例分析),我們通過詳細的步驟理解LDA內部邏輯實現原理,能夠更好地掌握線性判別分析的內部機制。
  • Python的一行代碼有何魅力?lambda匿名函數都自嘆不如
    Python學起,接觸這個語言的人對Python這種簡潔的代碼編寫方法都愛不釋手。其中,一行代碼編寫與lambda表達式是最具代表性的方法,下面分別來介紹一行代碼編寫和lambda表達式的代碼之美。一行代碼我們都知道,創建列表的方式有多種,比如直接定義、使用list()函數轉換、使用for循環迭代輸出等等。
  • Python 10 行以內代碼能有什麼高端操作?|原力計劃
    作者 | ZackSock來源 | CSDN博客Python憑藉其簡潔的代碼,贏得了許多開發者的喜愛。因此也就促使了更多開發者用Python開發新的模塊,從而形成良性循環,Python可以憑藉更加簡短的代碼實現許多有趣的操作。
  • 加快程序運行速度只需一行 Python 代碼
    for _ in range(size):        worker = Consumer(queue)        worker.start()        workers.append(worker)    return workersif __name__ == __main__ :    Producer()這段代碼能正確的運行
  • 一行代碼簡化Python異常信息:錯誤清晰指出,排版簡潔美觀
    只需一個import,報錯也能整齊劃一,錯誤代碼位置、錯誤原因清晰明了,一眼就能看清。debug仿佛都沒有那麼痛苦了。一行代碼簡化報錯先來試試一個簡單的錯誤。bug少的時候,還不覺得有什麼太大區別。當報錯信息鋪滿一整頁,美觀不美觀,對心靈的打擊程度就完全不同了。使用指南像Python的所有第三方庫一樣,PrettyErrors的安裝十分簡單。
  • CSDN博文精選:Android系列開發博客資源匯總
    CSDN博客本期熱文推薦,為您介紹有關Android應用開發的10個博客,分享他們的日積月累的寶貴經驗,希望這些文章對Android開發者們能有所啟發和幫助。系列一:什麼是Android?Android是一個行動裝置的軟體集,他包括一個作業系統、中間件,和一些重要的應用程式。Android SDK提供了Android開發平臺的必要的工具和APIs,它使用Java程式語言……我的研究分析是從設計者的意圖出發,從抽象的甚至從哲學的高度,從最簡單的系統原型開始,從設計猜想開始,而不是一開始就從代碼分析展開。
  • 八行python代碼展現程式設計師從入門到大神的八種階段
    人生苦短,我用python。python的世界裡無處不在的簡潔和短小,往往一行代碼可以實現很多有意思功能。這八種狀態也是一個程式設計師從入門到大神(跑路)的八個階段,每個階段對應一行代碼並且可以直接運行,看看你現在已經到了哪個階段1.初學pythonprint("Hello World!")
  • 如何 Import 自定義的 Python 模塊?
    /lys_828/article/details/106176229【導語】:實際工作中,經常要用的功能能不能像導入python模塊一樣,通過import導入呢?背景在實際的工作過程中,經常會用到一個功能,如果每次編寫代碼的時候都進行重新編寫或者打開已經編寫好的函數進行複製粘貼,這樣就顯得很麻煩,有沒有什麼方法可以像導入python模塊的那樣,直接把要用的函數以模塊名+方法的形式調用呢?