讓我們看看這部分零件:
len(my_list)
是4.因此range(len(my_list)-1, 0)
相同range(3, 0)
,這是在Python 2 []
(在Python 3,儘量list(range(3, 0))
看到同樣的空列表。)
如果你想有一個下降的範圍內,使用負步驟(第三個參數):
range(3, 0, -1)
給出[3, 2, 1]
。它不包括0
,因爲即使是負值步驟,上限(第二個參數)也是排他性的,即不是結果的一部分。看起來你已經通過初始化temp
變量,在my_list
之前已經完成了循環,然後在索引中減去1時使用它來訪問循環中的my_list
內容。
my_list = [array0, array1, array2, array3]
temp = my_list[-1]
for k in range(len(my_list) - 1, 0, -1):
temp = temp + my_list[k - 1]
return temp
因此可能工作。
但是,如果你需要的指數只能訪問my_list
,您可以通過在的my_list
的元素直接迭代擺脫他們(在這裏反向)爲了你想要的:
my_list = [array0, array1, array2, array3]
temp = empty_array # Not quite sure what this has to be. (Depends on your array type.)
for array in reversed(my_list):
temp = temp + array
return temp
我假設你的數組在循環中連接在一起。如果它是一個實際的加法(NumPy向量加法,例如—,雖然我不明白爲什麼加法順序對此很重要,除了可能的精度,如果my_list
中的值已排序),請使用適當的零元素而不是empty_array
。
你甚至可以完全擺脫循環。如果你想添加您的數組:
my_list = [array0, array1, array2, array3]
return sum(reversed(my_list))
如果你想將它們串聯:
from itertools import chain
my_list = [array0, array1, array2, array3]
return list(chain.from_iterable(reversed(my_list)))