在Python中对列表(或数组)中的每个元素加上一个数字

61

我又来问一些基础问题了,请多包涵。

在Matlab中,将数字添加到列表中的元素相当简单:

a = [1,1,1,1,1]
b = a + 1

b 现在是 [2,2,2,2,2]

在 Python 中,这似乎不起作用,至少对于列表来说。

有没有一种简单快速的方法可以将一个单独的数字加到整个列表中。

谢谢

5个回答

85

如果您想要操作数字列表,最好使用NumPy数组:

import numpy
a = [1, 1, 1 ,1, 1]
ar = numpy.array(a)
print ar + 2

提供

[3, 3, 3, 3, 3]

32

使用列表推导式:

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

>>> map(lambda x:x+1, L)
[2, 2, 2, 2, 2]
>>> 

5
您可以使用map:
a = [1, 1, 1, 1, 1]
b = 1
list(map(lambda x: x + b, a))

它会得到:

[2, 2, 2, 2, 2]

2

试试这个。(我修改了例子,使它不再平凡)

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

0
如果您不想使用列表推导式:
a = [1,1,1,1,1]
b = []
for i in a:
    b.append(i+1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接