直到現在的,給定一個列表L
元素之間的操作,我使用range(len(L))
來訪問它的元素:使用枚舉()的列表
L = [4, 3, 5, 2, 7]
for i in range(len(L)):
print(i, "-", L[i])
不過,我讀過,這種做法是不符合Python,有一個叫enumerate
功能,可以做的工作還有:
L = [4, 3, 5, 2, 7]
for i, n in enumerate(L):
print(i, "-", n)
現在,請允許我提出一個問題,以顯示我已經遇到了這種方法的麻煩:
Given a list of integers
L
, transform the list so that every elementn
in the resulting list is the sum of the elements up ton
in the initial list.
使用,這將是第一種方法:
L = [4, 3, 5, 2, 7]
for i in range(1, len(L)):
L[i] = L[i] + L[i - 1]
當嘗試第二種方法:
L = [4, 3, 5, 2, 1]
for i, n in enumerate(L): #It starts at element 0!
L[i] = n + L[i - 1]
的問題,從這個問題導致如下:
- 如何使枚舉從元素1開始?
- 在這種情況下,第二種方法實際上是否值得?
- 如果以前的答案是「否」,它什麼時候值得呢?
'枚舉(L,1)' – timgeb
我建議爲此任務使用'itertools.accumulate'或'numpy.cumsum' –
這是'reduce'曾經是的.. –