在Python中处理列表及算术逻辑

0 投票
3 回答
1629 浏览
提问于 2025-04-17 06:15

假设我有一个很长的数字列表,我想再做一个新的列表,然后把这两个列表中的数字一一相加。

这是第一个列表,A

[109, 77, 57, 34, 94, 68, 96, 72, 39, 67, 49, 71, 121, 89, 61, 84, 45, 40, 104, 68, 54, 60, 68, 62, 91, 45, 41, 118, 44, 35, 53, 86, 41, 63, 111, 112, 54, 34, 52, 72, 111, 113, 47, 91, 107, 114, 105, 91, 57, 86, 32, 109, 84, 85, 114, 48, 105, 109, 68, 57, 78, 111, 64, 55, 97, 85, 40, 100, 74, 34, 94, 78, 57, 77, 94, 46, 95, 60, 42, 44, 68, 89, 113, 66, 112, 60, 40, 110, 89, 105, 113, 90, 73, 44, 39, 55, 108, 110, 64, 108]

这是第二个列表,B

[35, 106, 55, 61, 81, 109, 82, 85, 71, 55, 59, 38, 112, 92, 59, 37, 46, 55, 89, 63, 73, 119, 70, 76, 100, 49, 117, 77, 37, 62, 65, 115, 93, 34, 107, 102, 91, 58, 82, 119, 75, 117, 34, 112, 121, 58, 79, 69, 68, 72, 110, 43, 111, 51, 102, 39, 52, 62, 75, 118, 62, 46, 74, 77, 82, 81, 36, 87, 80, 56, 47, 41, 92, 102, 101, 66, 109, 108, 97, 49, 72, 74, 93, 114, 55, 116, 66, 93, 56, 56, 93, 99, 96, 115, 93, 111, 57, 105, 35, 99]

我该怎么写代码来实现这个加法呢?也就是说,我想逐个处理每一对数字,从A[0] 和 B[0]开始,一直到A[99] 和 B[99],最后得到一个新的列表C,这个列表的内容是A[0] + B[0]A[99] + B[99]的结果。

3 个回答

0

使用列表推导式:

C = [A[i]+ B[i] for i in range(len(A))]

而且更安全:

C = [A[i]+ B[i] for i in range(len(A)) if len(A) == len(B)]
2

这里有两个可能的选择:

  • 使用列表推导。
  • 使用NumPy库。

为了方便,我会用你列表的简化版本,元素逐个相加的结果会放在 c 里。

列表推导

a = [109, 77, 57, 34, 94, 68, 96]
b = [35, 106, 55, 61, 81, 109, 82]
c = [a_el + b_el for a_el,b_el in zip(a, b)]

NumPy

import numpy as np

a = np.array([109, 77, 57, 34, 94, 68, 96])
b = np.array([35, 106, 55, 61, 81, 109, 82])
c = a + b
5
result = [(x + y) for x, y in itertools.izip(A, B)]

或者:

result = map(operator.add, itertools.izip(A, B))

撰写回答