簡體   English   中英

Python 為列表中的每個元素添加上一個索引和下一個索引的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM