首页 > 解决方案 > 使用列表推导将数字加倍,直到达到 x

问题描述

我已经生成了下面的代码。但是,我想找到一种更 Pythonic 的方式,使用列表推导或 Lambda 来编写代码。

n = 84

trillion = [n * 2, n *= 2 while n <= 1000000000000]

或者

lambda n: n*=2 while n <= 1000000000000

number = 84
while number <= 1000000000000:  
    print (number * 2) 
    number *= 2


168
336
772

标签: pythonpython-3.xwhile-looplist-comprehension

解决方案


我不确定为什么在不涉及列表的情况下需要列表理解。但是,您可以简单地使用对数来计算最终结果。我还建议您使用10 ** 12or1_000_000_000_000而不是1000000000000使其更具可读性:

import math

number = 84

number *= 2 ** int(math.log2(10 ** 12 / number))

print(number)

721554505728

推荐阅读