到目前为止,给定一个列表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]
此问题导致的问题如下:
答案 0 :(得分:0)
以下是解决此特定问题的一些方法:
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)
答案 1 :(得分:-1)
回答L = [4, 3, 5, 2, 1]
for i, n in enumerate(L, start=1):
你这样做:
def sourceTCresponse = context.expand('${SOAP Request#Response}')
def sourceTCresponse_XML = new XmlParser().parseText(sourceTCresponse)
def targetNode = sourceTCresponse_XML.'**'.find {it.name() == 'return'}