一行python代碼原來能幹這麼多!帶你看看這些驚為天人的效果

一行代碼其實也能幹很多事,小編小面教教大叫一行代碼能幹什麼!

一:

mandelbrot 圖像中文名叫曼德勃羅圖像。Mandelbrot 圖像中的每個位置都對應於公式 N=x+y*i 中的一個複數。其實數部分是 x,虛數部分是 y,i 是 -1 的平方根。圖像中各個位置的 x 和 y 座標對應於虛數的 x 和 y 部分。百度百科給出的圖形是這樣的。

一行python代碼原來能幹這麼多!帶你看看這些驚為天人的效果

看不懂?沒關係,我們直接來看效果。 (左右滑動查看所有代碼)

<code>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)]))/<code>
一行python代碼原來能幹這麼多!帶你看看這些驚為天人的效果

二:

九九乘法表

還記得我們熟記於心的九九乘法表嗎?來,我們來鞏固下,我們用一行代碼打印出來。 (左右滑動查看所有代碼)

<code>print('\\n'.join([' '.join(['%s*%s=%-2s' % (y, x, x*y) for y in range(1, x+1)]) for x in range(1, 10)]))/<code>
一行python代碼原來能幹這麼多!帶你看看這些驚為天人的效果

三:

一行打印心型圖案

不會表白?一行代碼告訴你!

<code>print('\\n'.join([''.join([('AndyLove'[(x-y)%8]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' ')for x in range(-30,30)])for y in range(15,-15,-1)]))/<code>
一行python代碼原來能幹這麼多!帶你看看這些驚為天人的效果

四:

美麗的螺旋

你覺得上面的心型圖案不夠浪漫?那麼試試下面這個美麗的螺旋?在 Python 編譯器中輸入下面的代碼。 (左右滑動查看所有代碼)

<code>exec("""\\nfrom turtle import *\\nfor i in range(500): \\n    forward(i)\\n    left(91)\\n""")/<code> 

看下執行過程中的部分動態圖。

一行python代碼原來能幹這麼多!帶你看看這些驚為天人的效果

再截圖一張大圖看下,是不是很漂亮、很炫酷!

一行python代碼原來能幹這麼多!帶你看看這些驚為天人的效果

五:

這個畫圖庫用的是 turtle 庫。

計算出1-100之間的素數

素數又稱質數。一個大於 1 的自然數,除了 1 和它自身外,不能整除其他自然數的數叫做素數;

<code>print(' '.join([str(item) for item in filter(lambda x: not [x % i for i in range(2, x) if x % i == 0], range(2, 101))]))/<code>

結果是:

一行python代碼原來能幹這麼多!帶你看看這些驚為天人的效果

六:

一行代碼輸出斐波那契數列

斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為『兔子數列』,這個數列從第 3 項開始,每一項都等於前兩項之和。

<code>print([x[0] for x in [(a[i][0], a.append([a[i][1], a[i][0]+a[i][1]])) for a in ([[1, 1]], ) for i in range(30)]])/<code>

看下執行結果:

七:

一行代碼實現快排算法

快速排序是一種經典而高效的排序算法。

<code>quickSort = lambda array: array if len(array) <= 1 else quickSort([item for item in array[1:] if item <= array[0]]) + [array[0]] + quickSort([item for item in array[1:] if item > array[0]])
array = [9, 11, 88, 32, 8]
print(quickSort(array))/<code>

八:

打印 Python 之禪

你們知道 Python 之禪麼?知道『人生苦短,我用 Python』這句經典的出處麼?用下面一行代碼就可以打印 Python 之禪。 (左右滑動查看所有代碼)

<code>>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.

Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!/<code>

給大家一個參考的翻譯:

優美勝於醜陋。 顯式勝於隱式。 簡單勝於複雜。 複雜勝於難懂。 扁平勝於嵌套。 稀疏勝於緊密。 可讀性應當被重視。 儘管實用性會打敗純粹性,特例也不能凌駕於規則之上。 不要忽略任何錯誤,除非你確認要這麼做 面對不明確的定義,拒絕猜測的誘惑。 找到一種最好唯一的一種方法去解決問題。 雖然一開始這種方法並不是顯而易見,因為你不是 Python 之父。 做好過不做,但沒有思考的做還不如不做 如果實現很難說明,那它是個壞想法。 如果實現容易解釋,那它有可能是個好想法。 命名空間是個絕妙的想法,請多加利用。

九:

看漫畫

導入一個包就能看漫畫,執行代碼後系統會自動打開漫畫的頁面。

<code>import antigravity/<code>
一行python代碼原來能幹這麼多!帶你看看這些驚為天人的效果

給大家一個參考的翻譯:

上圖: “你在飛!怎麼做到的?” “Python!”

下左:

“我昨晚學習了 Python,一切都是那麼簡單”

“運行 HELLO WORLD 只需要 print “Hello World!””

下中: “我還是不明白……動態類型,還是空格?”

“來加入我們吧,編程又再次變得有趣起來了,Python 是一個全新的世界”

“但你是怎麼飛起來的?”

下右:

“我只是輸入了 import antigravity”

“就這樣?”

“我還對藥品櫃中的所有東西進行了採樣比較”(暗指他對比過多種編程語言,但還是覺得 Python 最簡單)

“但我想這就是 Python.”

十:

單線迷宮

cmd 命令下輸入下列代碼實現單線迷宮。

<code>python -c "while 1:import random;print(random.choice('|| __'), end='')"/<code>
一行python代碼原來能幹這麼多!帶你看看這些驚為天人的效果

一行代碼開啟 web 服務

使用此命令,建立一個內網可以快速訪問的 WEB 服務。

<code>python -m http.server 8080/<code>

輸入 http://localhost:8080/ 網站就可以訪問的 WEB 服務了。

一行python代碼原來能幹這麼多!帶你看看這些驚為天人的效果

十一:

迷你

用隨機的 unicode 字符打樣出來,完美模擬了的效果,按回車鍵停止。請看下面動態圖。

<code>python -c "import random;p=lambda:random.choice('7♪♫♣♠♦♥◄☼☽');[print('|'.join([p(),p(),p()]),end='\\r') for i in range(8**5)]”/<code>
一行python代碼原來能幹這麼多!帶你看看這些驚為天人的效果

十二:

一行代碼解決八皇后問題

什麼是八皇后問題?我們看下百度百科的解釋:八皇后問題,是一個古老而著名的問題,是回溯算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾於 1848 年提出:在 8×8 格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。高斯認為有 96 種方案。1854 年在柏林的象棋雜誌上不同的作者發表了40 種不同的解,後來有人用圖論的方法解出 92 種結果。計算機發明後,有多種計算機語言可以解決此問題。

一行python代碼原來能幹這麼多!帶你看看這些驚為天人的效果

用下列代碼可以列出所有結果,共 92 種。

<code>[__import__('sys').stdout.write('\\n'.join('.' * i + 'Q' + '.' * (8-i-1) for i in vec) + "\\n========\\n") for vec in __import__('itertools').permutations(range(8)) if 8 == len(set(vec[i]+i for i in range(8))) == len(set(vec[i]-i for i in range(8)))]/<code>
一行python代碼原來能幹這麼多!帶你看看這些驚為天人的效果

將多維數組轉化為一維

一行代碼將多維數組轉化為一維數組。

<code>print([i for item in ab for i in item])/<code>

給出一個多維數值 ab,通過這個方法變成一維數組。

<code>ab = [[1, 2, 3], [5, 8], [7, 8, 9]]
print([i for item in ab for i in item])

# 結果
[1, 2, 3, 5, 8, 7, 8, 9]/<code>

求解 2 的 1000 次方的各位數之和

2 的 1000 次方的值很大,把結果每位數都加起來等於多少呢?

<code>print(sum(map(int, str(2**1000))))

# 結果
1366/<code>

祝福

最後,送給各位:愛你三千遍!

<code>print("I Love You!\\n" * 3000)/<code>

最後,小編想說:我是一名python開發工程師,

整理了一套最新的python系統學習教程,

想要這些資料的可以關注私信小編“01”即可(免費分享哦)希望能對你有所幫助


分享到:


相關文章: