Python 使用列表元素作为指数的2^x之和

Python 使用列表元素作为指数的2^x之和,python,list,exponent,Python,List,Exponent,给定包含整数的列表: >>> print mylist [0, 1, 2] 我可以计算2^0+2^1+2^2的和吗?基数(2)是固定的,它不会改变,我只是使用列表中的元素作为指数 相关疑问: 列表是否适合我要做的事情?试试看 mylist = [0,1,2] sum(2**i for i in mylist) 当然是 mylist = [0, 1, 2] print sum([2**x for x in mylist]) 输出: 7 您可以简单地使用map()和lamb

给定包含整数的列表:

>>> print mylist
[0, 1, 2]
我可以计算
2^0+2^1+2^2
的和吗?基数(2)是固定的,它不会改变,我只是使用列表中的元素作为指数

相关疑问: 列表是否适合我要做的事情?

试试看

mylist = [0,1,2]
sum(2**i for i in mylist)
当然是

mylist = [0, 1, 2]
print sum([2**x for x in mylist])
输出:

7

您可以简单地使用
map()
lambda
表达式:

print sum(map(lambda x:2**x, mylist))
>>> 7
我想您可以使用
列表
,但是,考虑到其元素的线性性质,最好只使用
范围()
对象:

mynum = 2
mysum = sum(2**x for x in range(mynum+1))

不使用列表的另一种方法是:

x=0
对于范围(0,3)内的i:
x=x+pow(2,i)

打印“%d”%x

为什么不进行一些测试并找出答案?因为我怀疑列表是否是实现这一目标的合适数据结构,如果您进行了测试,您的疑问会以某种方式得到解决。这正是测试的目的。请使用此答案,而不要使用带有
^
的其他答案,而不要使用
**
<代码>^执行按位异或(xor)。例如,2^2==0(二进制10XOR 10==00)和2^1==3(二进制10XOR 01==11)。@Colin good point,没有意识到这一点。有趣的是,我写了输出5,其他人也写了5。。。该死的那些复制粘贴XDDD你也可以使用
sum(2**x代表我列表中的x)
;您不需要仅为了传递给
sum
而构建列表对象。请不要使用变量
sum
隐藏内置函数
sum
,将用户定义的函数传递给
map
通常比简单地使用列表理解效率低。您假设列表是连续的;那么
mylist=[0,3,5,7]
呢?示例中的列表是连续的(无论如何,是线性的-
范围(0,10,3)
是不连续的,但是线性的)。这就是为什么我建议使用
range()
。我认为OP的用例很有可能涉及到这样一种模式。如果提供更多信息显示使用非线性
list
s,则情况会有所不同。
mynum = 2
mysum = sum(2**x for x in range(mynum+1))