Python为列表中的每个元素添加前一个索引和下一个索引的值



对于列表中的每个元素,我想在元素前后添加值,并将结果附加到空列表中。问题是,在索引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]

这里可能会出现异常,我认为这段代码可以处理异常。

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)

您的输出将如下所示:

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

输出:

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

生成如下输出:

[3,6,9,12,9]

希望对你有帮助。

最新更新