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))