【问题标题】:Python for each element in a list add the value of previous index and next indexPython 为列表中的每个元素添加上一个索引和下一个索引的值
【发布时间】:2022-12-01 02:22:05
【问题描述】:

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

【问题讨论】:

  • 使用i==0和i==len(vec),您可以测试i-1或i+1不存在的情况。那就创造条件吧。

标签: python list for-loop append range


【解决方案1】:

您可以将 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]

希望这可以帮助。

【讨论】:

    【解决方案2】:

    您可以在 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]
    

    【讨论】:

      猜你喜欢
      • 2019-09-19
      • 2016-11-02
      • 1970-01-01
      • 1970-01-01
      • 2014-12-23
      • 2017-11-11
      • 2016-07-14
      • 1970-01-01
      • 2021-09-30
      相关资源
      最近更新 更多