龙空技术网

Python基础知识:善用列表推导式,优雅求解水仙花数

编码那些事 649

前言:

今天姐妹们对“c语言输出水仙花”可能比较关切,看官们都需要分析一些“c语言输出水仙花”的相关文章。那么小编在网摘上收集了一些对于“c语言输出水仙花””的相关资讯,希望小伙伴们能喜欢,大家快快来了解一下吧!

什么是水仙花数

水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,严格的定义水仙花数,是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。如371 = 3^3 + 7^3+ 1^3,则371是一个水仙花数。

Python中的求解思路

根据水仙花数的定义,可以理出下面的编程思路:

新建一个空列表x,用以存储所有的水仙花数在For循环中,对100-999之间的任意一个整数i,逐个分解出其个位数a、十位数b和百位数c,比较a、b、c三个数字的3次幂之和是否等于i本身,若等于,则将i添加到列表x中最后输出的x即为求解的所有水仙花数

代码如下图所示:

注意,在将一个整数i分解出个位数a、十位数b和百位数c时,个位数a是i除以10后得到的余数,百位数c是i除以100后得到的余数,而十位数则是先将i整除10后得到整数部分,再将整数部分除以10后得到的余数数即为十位数,上面代码运行结果如下,得到所有的水仙花数为[153,370,371,407]:

使用列表推导式对代码进行优雅的改进

上面代码求解水仙花数时,实际代码行数为第9-15行共7行代码,太复杂了些,下面使用列表推导式作以下改进,代码如下:

将上面的7行代码写为第11行只有1行代码,运行结果仍然相同,即所有的水仙花数为[153,370,371,407],很明显,代码简化了太多。

另外,关于列表推导式,其通用的书写形式如下:

[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]

结论

列表推导式是Python语言中一项独有的特性,使用推导式可以从一个数据序列根据一定的条件方便的构建出另一个新的数据序列。

从现在开始,善用列表推导式,做一个合格的优雅的pythoner吧。

欢迎加关注,共同交流。

标签: #c语言输出水仙花 #三位数水仙花数c语言 #c语言打印出所有的水仙花数所谓水仙花数是指 #python如何调用函数求水仙花数 #如何用python求水仙花数