4 回答

TA贡献1936条经验 获得超6个赞
您可以使用:
idx = [i for i, v in enumerate(lis, 1) if v == -1]
print(sum(lis[idx[0]:idx[1]-1]))
# 4

TA贡献1797条经验 获得超6个赞
下面是一个无需工作的示例lambda
lis = [1,2,3,4,-1,1,1,1,1,-1,1,2,3]
first = lis.index(-1) + 1
second = lis[first:].index(-1) + first
result = sum(lis[first:second])

TA贡献1873条经验 获得超9个赞
一种方法是,您可以创建一个布尔标志,当您看到 -1 时,该标志设置为 true,并在看到第二个 -1(或中断)时将其设置回 false。如果标志为真,则将数字相加。
lis = [1,2,3,4,-1,1,1,1,1,-1,1,2,3]
sum = 0
flag = False;
for i in range(len(lis)):
if not flag:
if lis[i] == -1:
flag = True
elif lis[i] == -1:
flag = False #this line could be omitted
break
else:
sum += lis[i]
print(sum)

TA贡献1895条经验 获得超3个赞
您可以使用 来查找第一个 -1。它还提供了第二个参数,用于从何处开始搜索,因此您也可以使用它来查找第二个 -1。然后只需获取它们之间的切片并求和即可。lis.index
>>> start = lis.index(-1) + 1
>>> stop = lis.index(-1, start)
>>> sum(lis[start:stop])
4
添加回答
举报