一行 Python 代碼能實(shí)現(xiàn)什么奇葩功能?
“
閱讀本文大概需要 3 分鐘。
輸出 Mandelbrot 圖像
mandelbrot 圖像中文名叫曼德勃羅圖像。Mandelbrot 圖像中的每個(gè)位置都對(duì)應(yīng)于公式 N=x+y*i 中的一個(gè)復(fù)數(shù)。其實(shí)數(shù)部分是 x,虛數(shù)部分是 y,i 是 -1 的平方根。圖像中各個(gè)位置的 x 和 y 坐標(biāo)對(duì)應(yīng)于虛數(shù)的 x 和 y 部分。百度百科給出的圖形是這樣的。

看不懂?沒關(guān)系,我們直接來看效果。(左右滑動(dòng)查看所有代碼)
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)]))

九九乘法表
還記得我們熟記于心的九九乘法表嗎?來,我們來鞏固下,我們用一行代碼打印出來。(左右滑動(dòng)查看所有代碼)
print('\n'.join(['?'.join(['%s*%s=%-2s'?%?(y,?x,?x*y)?for?y?in?range(1,?x+1)])?for?x?in?range(1,?10)]))
一行打印心型圖案
不會(huì)表白?一行代碼告訴你!
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)]))

美麗的螺旋
你覺得上面的心型圖案不夠浪漫?那么試試下面這個(gè)美麗的螺旋?在 Python 編譯器中輸入下面的代碼。(左右滑動(dòng)查看所有代碼)
exec("""\nfrom?turtle?import?*\nfor?i?in?range(500):?\n????forward(i)\n????left(91)\n""")
看下執(zhí)行過程中的部分動(dòng)態(tài)圖。

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

這個(gè)畫圖庫用的是 turtle 庫。
計(jì)算出 1-100 之間的素?cái)?shù)
素?cái)?shù)又稱質(zhì)數(shù)。一個(gè)大于 1 的自然數(shù),除了 1 和它自身外,不能整除其他自然數(shù)的數(shù)叫做素?cái)?shù);
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))]))結(jié)果是:

一行代碼輸出斐波那契數(shù)列
斐波那契數(shù)列(Fibonacci sequence),又稱黃金分割數(shù)列、因數(shù)學(xué)家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為『兔子數(shù)列』,這個(gè)數(shù)列從第 3 項(xiàng)開始,每一項(xiàng)都等于前兩項(xiàng)之和。
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)]])看下執(zhí)行結(jié)果:

一行代碼實(shí)現(xiàn)快排算法
快速排序是一種經(jīng)典而高效的排序算法。
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))打印 Python 之禪
你們知道 Python 之禪么?知道『人生苦短,我用 Python』這句經(jīng)典的出處么?用下面一行代碼就可以打印 Python 之禪。(左右滑動(dòng)查看所有代碼)
>>>?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!給大家一個(gè)參考的翻譯:
優(yōu)美勝于丑陋。
顯式勝于隱式。
簡單勝于復(fù)雜。
復(fù)雜勝于難懂。
扁平勝于嵌套。
稀疏勝于緊密。
可讀性應(yīng)當(dāng)被重視。
盡管實(shí)用性會(huì)打敗純粹性,特例也不能凌駕于規(guī)則之上。
不要忽略任何錯(cuò)誤,除非你確認(rèn)要這么做
面對(duì)不明確的定義,拒絕猜測(cè)的誘惑。
找到一種最好唯一的一種方法去解決問題。
雖然一開始這種方法并不是顯而易見,因?yàn)槟悴皇?Python 之父。
做好過不做,但沒有思考的做還不如不做
如果實(shí)現(xiàn)很難說明,那它是個(gè)壞想法。
如果實(shí)現(xiàn)容易解釋,那它有可能是個(gè)好想法。
命名空間是個(gè)絕妙的想法,請(qǐng)多加利用。
看漫畫
導(dǎo)入一個(gè)包就能看漫畫,執(zhí)行代碼后系統(tǒng)會(huì)自動(dòng)打開漫畫的頁面。
import?antigravity

給大家一個(gè)參考的翻譯:
上圖:
“你在飛!怎么做到的?”
“Python!”下左:
“我昨晚學(xué)習(xí)了 Python,一切都是那么簡單”
“運(yùn)行 HELLO WORLD 只需要 print “Hello World!””
下中:
“我還是不明白……動(dòng)態(tài)類型,還是空格?”“來加入我們吧,編程又再次變得有趣起來了,Python 是一個(gè)全新的世界”
“但你是怎么飛起來的?”
下右:
“我只是輸入了 import antigravity”
“就這樣?”
“我還對(duì)藥品柜中的所有東西進(jìn)行了采樣比較”(暗指他對(duì)比過多種編程語言,但還是覺得 Python 最簡單)
“但我想這就是 Python.”
單線迷宮
cmd 命令下輸入下列代碼實(shí)現(xiàn)單線迷宮。
python?-c?"while?1:import?random;print(random.choice('||?__'),?end='')"
一行代碼開啟 web 服務(wù)
使用此命令,建立一個(gè)內(nèi)網(wǎng)可以快速訪問的 WEB 服務(wù)。
python?-m?http.server?8080
輸入 http://localhost:8080/ 網(wǎng)站就可以訪問的 WEB 服務(wù)了。

迷你老虎機(jī)
用隨機(jī)的 unicode 字符打樣出來,完美模擬了老虎機(jī)的效果,按回車鍵停止。請(qǐng)看下面動(dòng)態(tài)圖。
python?-c?"import?random;p=lambda:random.choice('7?????????');[print('|'.join([p(),p(),p()]),end='\r')?for?i?in?range(8**5)]”

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

用下列代碼可以列出所有結(jié)果,共 92 種。
[__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)))]

將多維數(shù)組轉(zhuǎn)化為一維
一行代碼將多維數(shù)組轉(zhuǎn)化為一維數(shù)組。
print([i?for?item?in?ab?for?i?in?item])
給出一個(gè)多維數(shù)值 ab,通過這個(gè)方法變成一維數(shù)組。
ab?=?[[1,?2,?3],?[5,?8],?[7,?8,?9]]
print([i?for?item?in?ab?for?i?in?item])
#?結(jié)果
[1,?2,?3,?5,?8,?7,?8,?9]求解 2 的 1000 次方的各位數(shù)之和
2 的 1000 次方的值很大,把結(jié)果每位數(shù)都加起來等于多少呢?
print(sum(map(int,?str(2**1000))))
#?結(jié)果?
1366祝福
最后,送給各位:愛你三千遍!
print("I Love You!\n"?*?3000)你覺得還有哪些好玩的、有意思的一行代碼實(shí)現(xiàn)的功能,歡迎留言!
