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

2021-01-11 CSDN

作者 | 許文武

責編 | 郭芮

出品 | CSDN 博客

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

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

import numpy as npfrom 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 inrange(1,i+1)]) for i inrange(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==0else s(s,z*z+c,c,n-1))(0,0.02*x+0.05j*y,40))<2else' '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做多層級索引

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

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

相關焦點

  • 不懂NumPy 算什麼 Python 程式設計師?|CSDN 博文精選
    python 數組的元素則可以動態增減。numpy 數組中的元素都需要具有相同的數據類型,因此在內存中的大小相同。python 數組則無此要求。numpy 數組的方法涵蓋了大量數學運算和複雜操作,許多方法在最外層的 numpy 命名空間中都有對應的映射函數。和 python 數組相比,numpy 數組的方法功能更強大,執行效率更高,代碼更簡潔。
  • Python的一行代碼有何魅力?lambda匿名函數都自嘆不如
    Python學起,接觸這個語言的人對Python這種簡潔的代碼編寫方法都愛不釋手。其中,一行代碼編寫與lambda表達式是最具代表性的方法,下面分別來介紹一行代碼編寫和lambda表達式的代碼之美。一行代碼我們都知道,創建列表的方式有多種,比如直接定義、使用list()函數轉換、使用for循環迭代輸出等等。
  • 運用sklearn進行線性判別分析(LDA)代碼實現
    基於sklearn的線性判別分析(LDA)代碼實現一、前言及回顧本文記錄使用sklearn庫實現有監督的數據降維技術——線性判別分析(LDA)。在上一篇LDA線性判別分析原理及python應用(葡萄酒案例分析),我們通過詳細的步驟理解LDA內部邏輯實現原理,能夠更好地掌握線性判別分析的內部機制。
  • 一行Python代碼寫階乘函數
    背景我以前用Dart寫過一行的階乘函數:fact(double n) => n < 0 ? throw ('n must be bigger than 0') : n == 0 ?要求使用一行代碼編寫函數。調用方式為fact(x),其中x為要求階乘的數。不得使用分號以變相湊成一行。
  • |CSDN 博文精選
    上述三維渲染庫,包括 PyOpenGl,都有一個共同的特點,那就是只專注於三維功能的實現,而疏於對 UI 的支持。比 Vispy,雖然支持以 wx 或者 Qt 作為後端,但綁定後端以後,在窗口管理、交互操作等方面還是存在不少問題。PyOpenGl 做得更簡單,提供一個 GLUT 庫就算是對 UI 的支持了。
  • 一行代碼的大用處!看到最後一個我終於忍不住了...
    傳智播客博學谷微信號:boxuegu-get最新最全的IT技能免費領取各種視頻資料俗話說得好:兩個黃鸝鳴翠柳,一行代碼上青天!就一行你想讓我幹啥?一行代碼畫個愛心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一行代碼輸出Mandelbrot圖像print('\n'.join([''.join
  • 10行Python代碼也能實現,親測好用!
    大數據文摘出品編譯:朱一輝、雪清、小魚短短10行代碼就可以實現目標檢測?!本文作者和他的團隊構建了一個名為ImageAI 的Python庫,集成了現今流行的深度學習框架和計算機視覺庫。本文將手把手教你構建自己的第一個目標檢測應用,而且文摘菌已經幫你踩過坑了,親測有效!
  • 使用一行Python代碼從圖像讀取文本
    雖然圖像分類和涉及到一定程度計算機視覺的任務可能需要大量的代碼和紮實的理解,但是從格式良好的圖像中讀取文本在Python中卻是簡單的,並且可以應用於許多現實生活中的問題。在今天的帖子中,我想證明這一點。雖然會安裝一些庫,但不會花很多時間。
  • 科悟學院介紹什麼是Python、python能做什麼?
    2020年什麼是另一個風口?哪些人能再一次的崛起?這是很多人想知道的,今天小編就給你揭秘一個行業——Python(AI人工智慧),有人會問python到底是什麼?能做什麼?下面科悟學院介紹什麼是python和python能做什麼,希望對於正在學習的你有所幫助。
  • Python實現視頻裁剪添加水印功能
    今天來實現一個利用Python的moviepy類庫裁剪視頻的功能。寫這個功能的初衷是想批量的裁剪一下視頻,下面一起來看一下代碼吧!python目前我們實現的是將單獨一個視頻進行裁剪。本次我們將目前視頻截取一小段內容,並為其添加一個水印圖片。
  • python基礎教程之python是什麼?
    這是最近10年最常用的10種程式語言的變化圖:python是什麼--python的功能總的來說,這幾種程式語言各有千秋。用Python開發,許多功能不必從零編寫,直接使用現成的即可。除了內置的庫外,Python還有大量的第三方庫,也就是別人開發的,供你直接使用的東西。當然,如果你開發的代碼通過很好的封裝,也可以作為第三方庫給別人使用。許多大型網站就是用Python開發的,例如YouTube、Instagram,還有國內的豆瓣。
  • python是什麼:Python相關內容了解
    今天來聊聊一篇關於python是什麼:Python相關內容了解的文章,現在就為大家來簡單介紹下python是什麼:Python相關內容了解,希望對各位小夥伴們有所幫助。這是最近10年最常用的10種程式語言的變化圖:Python的功能:總的來說,這幾種程式語言各有千秋。C語言是可以用來編寫作業系統的貼近硬體的語言,所以,C語言適合開發那些追求運行速度、充分發揮硬體性能的程序。而Python是用來編寫應用程式的高級程式語言。
  • |CSDN 博文精選
    通用量子計算機通過量子糾纏、量子幹涉、量子疊加等量子態實現計算,例如,Google於2018年3月發布的72量子比特的量子計算機Bristlecone;專用量子計算機則是通過其他理論或模型實現計算(如,量子退火理論等),例如,D-Wave公司的發布的各型量子計算機,該公司於2018年發布的量子計算機已具有高達2000個量子位。
  • 計算機大數乘法引發的思考 | CSDN 博文精選
    手工算豎式人人都會,說這些也無益,上周三下班的班車上,順手擼了一個代碼,感覺還好,發了個朋友圈就想分享出來,本周就休息一天,趕早起來就寫下了這篇文章。看看上面的代碼,算法完全模仿人類的手工豎式,按照十進位一位乘法來推進計算過程。但是這裡面有個根本的問題,猜猜看是什麼?一位乘法對於人類而言是可以直接計算的,99乘法表都會背,我們計算4×7的時候,沒有必要擺4排的7,然後數一數一共有多少,而是脫口而出28。
  • XGBoost缺失值引發的問題及其深度分析|CSDN博文精選
    從該同學給出的測試代碼上,並沒有發現什麼問題://測試結果中的一行,41列double input = new double{1, 2, 5, 0, 0, 6.666666666666667, 31.14, 29.28, 0, 1.303333, 2.8555, 2.37, 701, 463, 3.989, 3.85, 14400.5, 15.79, 11.45, 0.915
  • 1行代碼實現Python數據分析:圖表美觀清晰,自帶對比功能丨開源
    這是一個基於Python編寫的數據分析軟體,只要掌握3種函數用法,一行Python代碼就能實現數據集可視化、分析與比較。我們以Titanic數據集為例,輸入一行代碼:一個1080p的清晰網頁界面就出現在了眼前。不僅根據性別、年齡等不同欄目縱向分析數據,每個欄目下還有眾數、最大值、最小值等橫向對比。
  • 用爬蟲秒搶到孩子心儀的幼兒園|CSDN 博文精選
    我儘量將全部的細節說清,對於讀者也沒有什麼相應基礎的要求。首先我們的第一大原則是要保證相應操作的安全性,純程序模擬交互的方式一旦被報名網站防護機制識破,後果將不堪設想。所以先將這種方式排除。接下來我想到的是腳本化語言+可編程瀏覽器方式,我們知道Selenium是一個自動化的網頁測試框架。
  • Python能幹什麼?為什麼會這麼火
    那麼Python能幹什麼?為什麼會這麼火?那麼Python能幹什麼呢?1.網站後端程式設計師:使用它單間網站,後臺服務比較容易維護。2.自動化運維:自動化處理大量的運維任務3.數據分析師:快速開發快速驗證,分析數據得到結果5.自動化測試:編寫為簡單的實現腳本,運用在Selenium/lr中,實現自動化。6.網站開發:藉助django,flask框架自己搭建網站。
  • Python語言基礎50課(3)​|一行代碼統計序列ATCG含量
    我將例子簡化到核心,需求為 統計一條序列的中 ATCG的含量,直接上代碼:myseq = 'CTAGCGCcttagcatcctatcatgttcacNNNATCTCTAGCGCGGCAT'print([x+'% :{:.2%}'.format(myseq.count(x)/len(myseq)) for x in set