@數據分析師攻略 公眾號
關注、學習更多數據分析的知識與資訊
------
Python的語法十分簡潔,簡潔到只需要一行代碼,即可輸出意想不到的效果。一行代碼到底有什麼獨特的魅力,下面一起來感受一下吧!
1、畫一個愛心
作為一個Python程式設計師,自從接觸Python就有種愛不釋手的感覺,逐漸地被它的簡潔高效的代碼所吸引,所有我想用一行Python代碼來畫出一個心形向Python語句表白。學會的小夥伴,也可以這行代碼來畫一個愛心,向自己的女神表白哦!
print('\n'.join([''.join([('HelloPython'[(x-y) % len('HelloPython')] 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(30, -30, -1)]))
2、畫一個Mandelbrot
有一個著名的圖像叫mandelbrot。Mandelbrot圖像中的每個位置都對應於公式N=x+y*i 中的一個複數,高中學過複數的都還應該有印象。每個位置用參數N來表示,它是x*x+y*y的平方根。如果這個值大於或等於2,則這個數字對應的位置值是0。如果參數N的值小於2,就把N的值改為N*N- N(N=(x*x-y*y-x)+(2*x*y-y)*i)),並再次測試這個新N值。
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))<2 else' 'for x in range(-80,20)])for y in range(-20,20)]))
3、列印99乘法表
小時候剛學習99乘法表,數學老師經常布置的作業就是背誦和默寫99乘法表,那段時候感覺這個表又神奇,又很難學。但多虧老師的諄諄教導,如今我們對99乘法表簡直可以倒背如流。可是,你也許不知道,Python能用一行代碼就可以將99乘法表整齊地輸出來了,是不是更神奇了!
print('\n'.join([' '.join(['%s*%s=%-2s' % (y, x, x*y) for y in range(1, x+1)]) for x in range(1, 10)]))
4、讓兩個變量交換值
這也許是Python一行代碼最簡單的表達方式,讓兩個變量交換值。以前習慣了使用第三個變量作為中間變量,用這個中間變量分別給兩個變量去交換值,現在來看那都複雜了,一行代碼能搞定的事情,就沒中間變量什麼事。
5、排序算法
Python一行代碼實現排序算法,就這一點足以體現Python代碼的簡潔高效的魅力。
6、八皇后問題
玩過西洋棋的人都知道,八皇后問題表述為:在8×8格的西洋棋上擺放8個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上。
[__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)))]
7、列印迷宮
工作累了,列印一個迷宮來玩會吧。
print(''.join(__import__('random').choice('\u2571\u2572') for i in range(30*25)))
8、計算1-100之間的素數
質數又稱素數。一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數,1-100之間的素數有哪些?快來看看。
print(' '.join([str(item) for item in filter(lambda x: all(map(lambda p: x % p!= 0, range(2, x))), range(2, 101))]))
輸出結果:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
9、輸出前100項斐波那契數列的值
斐波那契數列指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34、……,這個數列從第3項開始,每一項都等於前兩項之和。
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(100) ]])