(python口诀表)(python写乘法口诀表)

我最近浏览到一个讨论,问“一行代码”可以实现什么。我想这样的问题简直就是为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写乘法口诀表)

一行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口诀表)(python写乘法口诀表)

一行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写乘法口诀表)

一行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以简洁闻名,但是类似的一行代码,仍然只是茶余饭后的消遣。真正在工作、学习中,代码可读性和算法复杂度,比这种强行实现的简洁要更为重要。类似本文的一行玩法,在实际工作中绝不推荐尝试。

声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者贾湖图的科技小站所有,原文出处。若您的权利被侵害,请联系删除。

本文标题:(python口诀表)(python写乘法口诀表)
本文链接:https://www.51qsb.cn/article/dvjia4.html

(0)
打赏微信扫一扫微信扫一扫QQ扫一扫QQ扫一扫
上一篇2023-07-24
下一篇2023-07-24

你可能还想知道

发表回复

登录后才能评论