将一个数字与 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 中列表(或数组)中的每个元素相加的主要内容,如果未能解决你的问题,请参考以下文章

怎么将python中的数组全部打印出来array

如何在clojure中的每一行打印数字列表?

Python中的列表

Python将列表重塑为ndim数组

Python 列表与数组 - 何时使用?

递归与回溯:python列表组合问题