谁能用python解决这个问题?
编写一个程序,该程序打印数组A的元素之和与数组A的反向元素的相应元素。如果数组A具有元素[1,2,3],则数组A的反向元素为[3] ,2,1],结果数组应为[4,4,4]。
输入格式:
输入的第一行包含代表数组A中元素数量的数字N。输入的第二行包含由空格分隔的N个数字。 (在最后一个元素之后,没有空格)
输出格式:
打印以空格分隔的结果数组元素。 (最后一个元素后没有空格)
输入:
4
2 5 3 1
输出:
3 8 8 3
说明:
此处数组A为[2,5,3,1]或此数组的反向为[1,3,5,2],因此所得数组为[3,8,8,3]
答案 0 :(得分:1)
您可以使用列表推导来反转列表,并运行循环以获取原始列表和反转列表的总和:
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]
答案 1 :(得分:0)
如果要使用数组
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)])