直到现在的,给定一个列表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'曾经是的.. –