如何返回 2 的幂的数字列表?

新手上路,请多包涵
def problem(n):
myList = []
for j in range(0, n):
    number = 2 ** j
    myList.append(number)
return myList

我希望这段代码根据 2 的前 n 次方返回 2 的次方。例如,如果我输入 4,我希望它返回 [2,4,6,8,16]。现在,如果我输入 4,代码将返回 [1,2,4,8]。我认为是我的范围弄乱了代码。

原文由 starrynights89 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 432
1 个回答

只需使用 range(1,n+1) 就可以了。 range 对某些人来说有点混乱,因为它不包括端点。因此, range(3) range(1,3) 列表 [0,1,2] [1,2]


作为旁注,形式的简单循环:

 out = []
for x in ...:
   out.append(...)

通常应替换为列表推导式:

 out = [ 2**j for j in range(1,n+1) ]

原文由 mgilson 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏