python怎么新开一行_极简主义的践行者:一行python可以怎么玩?
我最近瀏覽到一個討論,問“一行代碼”可以實現什么。我想這樣的問題簡直就是為Python而生的。于是我自己想了想,決定動手實踐幾個一行Python的操作。
一行Python打印九九乘法口訣。
這個問題我以前就遇到過,不過一直沒動手寫出來。大體的思路就是利用Python的列表生成式,加上循環嵌套。用字符串的join函數來控制間隔與換行。本質就是一種矩陣式的行列循環,搞清楚變量的邏輯就沒什么問題。
代碼:
print("\n".join([" ".join(["{}*{}={}".format(y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)]))
得到的效果:
一行Python打印楊輝三角。
其實在論壇里看見有朋友用一行Python打印斐波那契數列(也就是1,1,2,3,5,8,13……每一項等于前兩項之和),我想,同樣是用一行搞定迭代,何不玩個有難度的?于是我寫了個一行代碼打印楊輝三角。確實挺難的。主體思路還是迭代,利用列表的動態可變性,在循環中不斷改變列表值。
代碼:
[print(" ".join(map(str, x))) for x in [[[1]]+[[item.append([1] + [item[i][j]+item[i][j+1] for j in range(len(item[-1])-1)] + [1]), item][-1][-1] for item in [ [[1]] ] for i in range(9)]][0]]
得到效果:
一行Python代碼統計詞頻。
其實很想用一個函數式編程的方法搞定這個問題,不過暫時沒解決出來。只好犯規調個包,用collections里的Counter來操作一番了。
比如對于一個字符串:
string = "Andy James and Andy Smith are fighting with James Smith"
利用代碼:
[print("{} : {}".format(k, v)) for k, v in Counter(string.split(" ")).items()]
得到詞頻統計結果:
一行Python代碼畫心心表白。
代碼是死的人是活的,生活總歸要有一些情趣。在網上查到一個心形表達式后,我想到了可以用Python來大致畫出這個形狀。這個代碼簡直有用,想象你在給大妹子慶生的時候發一段代碼,往IDE里一跑。簡直完美!
代碼:
print('\n'.join([''.join([('BabyILoveU' [(x-y)%10] if ( (x*0.04)**2+(y*0.1)**2-1)**3-(x*0.04)**2*(y*0.1)**3<=0 else ' ' ) for x in range(-30,30)]) for y in range(15,-15,-1)]))
效果圖:
今天嘗試了幾種“一行Python”的技巧,感覺日后還有諸多開發的空間。下一次我準備以函數式編程為主題思想,拓展更多的“一行”玩法。
話說回來,雖然Python以簡潔聞名,但是類似的一行代碼,仍然只是茶余飯后的消遣。真正在工作、學習中,代碼可讀性和算法復雜度,比這種強行實現的簡潔要更為重要。類似本文的一行玩法,在實際工作中絕不推薦嘗試。
總結
以上是生活随笔為你收集整理的python怎么新开一行_极简主义的践行者:一行python可以怎么玩?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql 执行顺序_10个简单步骤,完全理
- 下一篇: python关闭csv文件_使用Pyth