可能重复:
How to return a list of numbers of the power of 2?我需要的是一个正整数(n)的启动函数,并返回2的幂的列表,从2
我所知道的是:
l = []
for i in range(2, n=2):
l.append(1**2)
return l
我不需要有一个完整的等式,我只需要知道如何做这样的等式的基础知识。
可能重复:
How to return a list of numbers of the power of 2?我需要的是一个正整数(n)的启动函数,并返回2的幂的列表,从2
我所知道的是:
l = []
for i in range(2, n=2):
l.append(1**2)
return l
我不需要有一个完整的等式,我只需要知道如何做这样的等式的基础知识。
像这样的事情?
def powers(n):
return [2**i for i in range(1, n+1)]
这是同样的方式,但使用for循环:
def powers(n):
l = []
for i in range(1, n+1):
l.append(2**i)
return l
SNIPPIT你上面贴有以下原因没有工作代码:
l.append(1**2)
- 这是一个到第二电源,这将永远等于一个。你大概的意思做l.append(2**i)
,这是2的变量i
您使用的范围不正确。有几种方法可以做到的范围
范围(停止)#开始默认为0
范围(启动,停止)
范围(启动,停止,步骤)#如果没有指定,一步默认为1
感谢您的帮助! –
您的意思是?
def get_powered_vals(endVal):
return [2**val for val in xrange(endVal+1)]
get_powered_vals(4)
>>> [2,4,8,16]
或者没有列表理解:
def get_powered_vals(endVal):
vals = []
for val in xrange(endVal+1):
vals.append(2**val)
print val, vals[-1]
return vals
get_powered_vals(4)
>>> 1, 2
>>> 2, 4
>>> 3, 8
>>> 4, 16
>>> [2,4,8,16]
虽然list comp可能是这样做的方式,但您可能希望显示带有list.append的显式循环。如果OP不理解,那么list-comp可能会问得太多。 – mgilson
@mgilson -sure加了,谢谢 –
我会试试这些,非常感谢 –
而是所有的低效幂的,只取最后计算出的值,并通过2
乘以它作为一个功能:
>>> def powers(n):
... ret = [1]
... while len(ret) < n:
... ret += [ret[-1]*2]
... return ret
...
>>> powers(10)
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
作为发电机:
>>> def gen_powers(n):
... last = 1
... while n:
... yield last
... last *= 2
... n -= 1
...
>>> list(gen_powers(10))
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
作为代码高尔夫球单行:
reduce(lambda a,b:a+[2*a[-1]],range(10),[1])
这是一个小暧昧;你想从2到n? 2到n^2?都不是? – jrajav
你的意思是做'l.append(i ** 2)'? – Michael0x2a
例如,使用4并尝试在列表开始处找到以2开头的2次幂的列表。EX:[2,4,8,16]应该是答案 –