繁体   English   中英

使用列表,在Python中执行算术逻辑

[英]Working with a list, performing arithmetic logic in Python

假设我已经列出了大量数字,并且我想再创建一个数字,将其与第一个列表成对添加。

这是第一个列表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] and B[0]A[99], B[99] )并生成列表CA[0] + B[0]A[99]+ B[99] )?

result = [(x + y) for x, y in itertools.izip(A, B)]

要么:

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

这是两个可能的选项:

  • 使用列表理解。
  • 使用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

具有列表理解:

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)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM