将一个数字与 Python 中列表(或数组)中的每个元素相加
Posted
技术标签:
【中文标题】将一个数字与 Python 中列表(或数组)中的每个元素相加【英文标题】:Sum one number to every element in a list (or array) in Python 【发布时间】:2011-08-10 21:45:20 【问题描述】:在这里我再次提出我的基本问题,但请耐心等待。
在 Matlab 中,向列表中的元素添加数字相当简单:
a = [1,1,1,1,1]
b = a + 1
b
然后是[2,2,2,2,2]
在 python 中,这似乎不起作用,至少在列表中。
有没有一种简单快速的方法可以将单个数字添加到整个列表中。
谢谢
【问题讨论】:
【参考方案1】:试试这个。 (我修改了这个例子,目的是让它变得不平凡)
import operator
import numpy as np
n=10
a = list(range(n))
a1 = [1]*len(a)
an = np.array(a)
operator.add
几乎快两倍以上
%timeit map(operator.add, a, a1)
比用 numpy 添加
%timeit an+1
【讨论】:
【参考方案2】:你也可以使用地图:
a = [1, 1, 1, 1, 1]
b = 1
list(map(lambda x: x + b, a))
它给出:
[2, 2, 2, 2, 2]
【讨论】:
【参考方案3】:如果你想对数字列表进行操作,最好使用 NumPy 数组:
import numpy
a = [1, 1, 1 ,1, 1]
ar = numpy.array(a)
print ar + 2
给予
[3, 3, 3, 3, 3]
【讨论】:
【参考方案4】:如果你不想要列表推导:
a = [1,1,1,1,1]
b = []
for i in a:
b.append(i+1)
【讨论】:
【参考方案5】:使用列表理解:
>>> 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]
>>>
【讨论】:
以上是关于将一个数字与 Python 中列表(或数组)中的每个元素相加的主要内容,如果未能解决你的问题,请参考以下文章