[英]Python for each element in a list add the value of previous index and next index
对于列表中的每个元素,我想将元素前后的值和 append 添加到一个空列表中。 问题是在索引 0 之前没有索引,最后也没有索引。 在索引 0 处,我想将索引 0 的值与索引 1 的值相加,在最后一个索引中,我想添加具有相同索引值的最后一个索引的值。 如下:
vec = [1,2,3,4,5]
newVec = []
for i in range(len(vec)):
newValue = vec[i] + vec[i+1] + vec[i-1]
# if i + 1 or i - 1 does now exist pass
newVec.append(newValue)
Expected output: newVec = [1+2, 2+1+3, 3+2+4,4+3+5,5+4]
# newVec = [3, 6, 9, 12, 9]
您可以在 for 循环中创建条件
for i in range(len(vec)):
if i == 0 :
newValue = vec[i] + vec[i+1]
elif i == len(vec)-1:
newValue = vec[i] + vec[i-1]
else:
newValue = vec[i] + vec[i+1] + vec[i-1]
newVec.append(newValue)
print(newVec)
output:
[3, 6, 9, 12, 9]
这里可能有异常,我认为这段代码可以解决问题并管理异常。
vec = [1, 2, 3, 4, 5]
new_vec = []
for index, number in enumerate(vec):
new_value = number
if index != 0:
new_value += vec[index - 1]
try:
new_value += vec[index + 1]
except IndexError:
pass
new_vec.append(new_value)
您的 output 将如下所示:
[3, 6, 9, 12, 9]
祝你好运 !
您可以将0
添加到vec
的任一侧,这样它就不会添加任何内容来创建准确的结果。 然后只需使用for i in range(1, ...)
循环,从值1
开始在i
之前和之后添加值。 这是我的代码得到的:
vec = [1,2,3,4,5]
newVec = []
vec.insert(0, 0)
vec.insert(len(vec) + 1, 0)
for i in range(1, len(vec) - 1):
newVec.append(vec[i-1] + vec[i] + vec[i+1])
print(newVec)
这创建了 output 的:
[3, 6, 9, 12, 9]
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.