使用 lambda 表达式:
def is_armstrong(n):
s = sum(map(lambda x: eval(x)**len(str(n)), str(n)))
return s == n
B = []
for i in range(1000):
if is_armstrong(i):
B.append(i)
print(B)
输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407]
使用 list 的映射解析来进一步简化代码:
def is_armstrong(n):
return n == sum([eval(i)**len(str(n)) for i in str(n)])
B = [i for i in range(100000) if is_armstrong(i)]
print(B)
输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407, 1634, 8208, 9474, 54748, 92727, 93084]
ykykyukai
ykykyukai
axp***@126.com2年前 (2018-09-30)