谁能在python中解决这个问题?
编写一个程序,用阵列A反向的相应元素打印数组A的元素之和。如果数组A有元素[1,2,3],那么数组A的反向将是[3,2, 1],得到的数组应为[4,4,4]。
输入格式:
输入的第一行包含一个数字N,表示数组A中的元素数。输入的第二行包含由空格分隔的N个数字。 (在最后一个元素之后,没有空间)
输出格式:
打印由空格分隔的结果数组元素。 (最后一个元素后没有空格)
输入:
4
2 5 3 1
输出:
3 8 8 3
说明:
这里数组A是[2,5,3,1],这个数组的反向是[1,3,5,2]因此得到的数组是[3,8,8,3]
您可以使用列表推导来反转列表并运行循环以获取原始列表和反向列表的总和:
1)速记解决方案:
>> a = [4,5,6,7,8,9]
>> c = [ aa + bb for aa,bb in zip(a,a[::-1])]
>> c
[13,13,13,13,13,13]
在上面的代码中:
i)以下是反转列表的代码:
>> a[::-1]
ii)对于原始列表和反向列表的相应元素的总和,我创建了一个压缩列表并运行for循环并将其分配给c变量
>> c = [ aa + bb for aa,bb in zip(a,a[::-1])]
2)解决问题的另一种方法是:
a = [1,2,3,4]
b = a[::-1] // [4,3,2,1]
c = []
for aa,bb in zip(a,b):
cc = aa + bb
c.append(cc)
print(c) // [5,5,5,5]
如果要使用数组
import numpy as np
A = np.array((2, 5, 3, 1))
B = np.empty(4)
for i in range(len(A)):
B[i] = A[i] + A[-(1+i)]
如果您更愿意使用列表
A = [2, 5, 3, 1]
B = []
for i in range(len(A)):
B.append(A[i] + A[-(1+i)])