Python一句代码实现找出所有水仙花数
2017-05-28 19:47
399 查看
水仙花数是指一个 3位正整数,它的每个位上的数字的 3 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)
下面用一句代码实现找出所有的水仙花数:
说明:
上面的代码可以分解三句代码:
第一句表示用列表推到遍历所有的三位数,每个数都打上标记,是水仙花数着标记True,不是则标记False,标记和数放到一个元祖:(flag, value),所有元组放在一个list结构里。
第二句表示筛选出标记为True的元组。
第三句表示把第一句筛选出来的元组的第二个值放到list结构里。
加上print语句,执行一遍上面三句代码即可明白。
下面用一句代码实现找出所有的水仙花数:
方法一:
>>> >>> a = list(map(lambda x: x[1], filter(lambda x: x[0], [(i*100+j*10+k == i**3+j**3+k**3, i**3+j**3+k**3) for i in range(1, 10) for j in range(0, 10) for k in range(0, 10)]))) >>> print(a) [153, 370, 371, 407] >>>
说明:
上面的代码可以分解三句代码:
a = [(i*100+j*10+k == i**3+j**3+k**3, i**3+j**3+k**3) for i in range(1, 10) for j in range(0, 10) for k in range(0, 10)] b = filter(lambda x: x[0], a) c = list(map(lambda x: x[1], b))
第一句表示用列表推到遍历所有的三位数,每个数都打上标记,是水仙花数着标记True,不是则标记False,标记和数放到一个元祖:(flag, value),所有元组放在一个list结构里。
第二句表示筛选出标记为True的元组。
第三句表示把第一句筛选出来的元组的第二个值放到list结构里。
加上print语句,执行一遍上面三句代码即可明白。
方法二:
只用列表推导。>>> a = [i**3+j**3+k**3 for i in range(1, 10) for j in range(0, 10) for k in range(0, 10) if i*100+j*10+k == i**3+j**3+k**3] >>> print(a) [153, 370, 371, 407] >>>
相关文章推荐
- Python实现读取目录所有文件的文件名并保存到txt文件代码
- Python与C++ 遍历文件夹下的所有图片实现代码
- 14行Python代码实现 n 皇后问题(可求出所有结果)
- 程序员面试题精选100题(04)-在二元树中找出和为某一值的所有路径—python实现
- 键盘上所有的python代码实现按键,再也不怕找不到按键了!
- Boost-小试Regex库 代码实现的功能:找出html文件中的所有链接
- Python实现读取目录所有文件的文件名并保存到txt文件代码
- Python实现读取目录所有文件的文件名并保存到txt文件代码
- 找出满足a+b+c=n(n为正整数)的所有毕达哥拉斯元组(a,b,c)【python实现,时间复杂度优化】
- python 查找文件夹下所有文件 实现代码
- Android studio gradle依赖,依赖爆红,fileTree一句代码实现项目lib下的所有jar包全部自动依赖
- Python与C++ 遍历文件夹下的所有图片实现代码
- python实现找出所有包含元音aeiou且只有先后顺序为aeiou的单词
- Python实现读取目录所有文件的文件名并保存到txt文件代码
- Python实现读取目录所有文件的文件名并保存到txt文件代码
- 枚举数组中所有可能排列的代码实现 [2004年7月8日 1:57 ]
- python 域名分析工具实现代码
- C#.NET示例读写xml所有节点的代码实现方法和读取xml节点的数据总结
- 用Java实现遍历Oracle数据库某用户下的所有数据,找出想要查找的记录