在Python中,对列表(或数组)中的每个元素求和一个数字
我再问一次我的基本问题,但请耐心听我说 在Matlab中,向列表中的元素添加数字相当简单:在Python中,对列表(或数组)中的每个元素求和一个数字,python,list,sum,Python,List,Sum,我再问一次我的基本问题,但请耐心听我说 在Matlab中,向列表中的元素添加数字相当简单: a = [1,1,1,1,1] b = a + 1 b然后是[2,2,2,2,2] 在python中,这似乎不起作用,至少在列表中是这样 是否有一种简单快速的方法将单个数字添加到整个列表中 感谢使用列表理解: >>> L = [1]*5 >>> [x+1 for x in L] [2, 2, 2, 2, 2] >>> 这大致可以转化为使用for循
a = [1,1,1,1,1]
b = a + 1
b
然后是[2,2,2,2,2]
在python中,这似乎不起作用,至少在列表中是这样
是否有一种简单快速的方法将单个数字添加到整个列表中
感谢使用列表理解:
>>> L = [1]*5
>>> [x+1 for x in L]
[2, 2, 2, 2, 2]
>>>
这大致可以转化为使用for循环:
>>> newL = []
>>> for x in L:
... newL+=[x+1]
...
>>> newL
[2, 2, 2, 2, 2]
或使用地图:
>>> map(lambda x:x+1, L)
[2, 2, 2, 2, 2]
>>>
如果您不希望列表理解:
a = [1,1,1,1,1]
b = []
for i in a:
b.append(i+1)
如果要使用数字列表操作,最好使用NumPy数组:
import numpy
a = [1, 1, 1 ,1, 1]
ar = numpy.array(a)
print ar + 2
给予
您还可以使用地图:
a = [1, 1, 1, 1, 1]
b = 1
list(map(lambda x: x + b, a))
它给出:
[2, 2, 2, 2, 2]
试试这个。(我修改了这个例子,目的是使它不平凡)
operator.add
几乎快了两倍多
%timeit map(operator.add, a, a1)
而不是加上numpy
%timeit an+1
%timeit map(operator.add, a, a1)
%timeit an+1