簡體   English   中英

如何在循環中來回 go?

[英]How do I go back and forth in a loop?

所以我在這些索引 1 2 3 4 5 6 7 8 9 10 處有一系列項目。我首先需要添加中間兩個元素:

output = i[5]+i[6]

對於每次下一次迭代,output 必須先添加左元素,然后再添加右元素。

output = output + i[4]

下一步,

output = output + i[7]

我不知道如何在循環或任何其他結構中做到這一點。 有人可以向我推薦什么嗎? 我正在使用 python,但我只需要偽代碼。

要為每次迭代從左側或右側獲取元素,我將使用while語句與list上的pop()結合使用。

代碼

l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

total = 0

while len(l):
    total += l.pop(len(l) // 2)

Output

print(total)
55

total進度為:

0 + 6 = 6
6 + 5 = 11
11 + 7 = 18
18 + 4 = 22
22 + 8 = 30
30 + 3 = 33
33 + 9 = 42
42 + 2 = 44
44 + 10 = 54
54 + 1 = 55

這里的共同點是兩個下標加起來必須是 11。

output = 0
for left in range(5, 0, -1):
    right = 11 - left
    output += i[left]
    output += i[right]

我離開解決方案的時間超過了必要的時間,因為您之間似乎還有其他步驟。

newlist=[1,2,3,4,5,6,7,8,9,10]
while(len(newlist)>0):
    lengthi=(len(newlist)//2)-1
    lengthj=(len(newlist)//2)
    sum=(newlist[lengthi]+newlist[lengthj])
    del newlist[lengthi:(lengthj)+1]
    print(sum)

這適用於我嘗試過的列表,但是這會根據列表的長度而變化。 即使長度發生變化,這也適用於代碼給出錯誤,因為最后會有一個不匹配的元素。 您也可以通過將變量復制到另一個變量而不刪除列表然后從中刪除變量來執行此操作可能會更好。

那么你可以從列表的中間開始,然后當你向前 go 時,將左右元素添加在一起。

m = len(a)//2  # middle of the list
output = 0
for i in range(m):
    output += a[m-i-1] + a[m+i]

我在這里相信列表的長度是偶數。 雖然奇數長度不會有問題,只是列表的最后一個元素將被忽略。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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