[英]Using enumerate() for operations between the elements of a list
到目前為止,給定一個列表L
,我正在使用range(len(L))
來訪問其元素:
L = [4, 3, 5, 2, 7]
for i in range(len(L)):
print(i, "-", L[i])
但是,我已經讀過這種方法不是pythonic的,並且有一個名為enumerate
的函數也可以完成這項工作:
L = [4, 3, 5, 2, 7]
for i, n in enumerate(L):
print(i, "-", n)
現在,讓我提出一個問題,以顯示使用此方法遇到的麻煩:
給定整數
L
的列表,對列表進行變換,以使結果列表中的每個元素n
為初始列表中最多n
元素的總和。
使用第一種方法是:
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]
此問題導致的問題如下:
以下是針對此特定問題的一些解決方案:
L = [4, 3, 5, 2, 7]
# Solution 0
print([sum(L[0:i + 1]) for i in range(len(L))])
# Solution 1
res = [0]
for i, n in enumerate(L):
res.append(res[-1] + n)
print(res[1:])
# Solution 2
for i, n in enumerate(L[1:]):
L[i + 1] = L[i + 1] + L[i]
print(L)
回答How can I make enumerate start at element 1
您可以這樣進行:
L = [4, 3, 5, 2, 1] for i, n in enumerate(L, start=1):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.