猿问

Python Logic,用于查找满足条件的子列表的总和

我需要找到 和 之间的列表元素的总和。-1-1


我尝试了这个解决方案,但它将元素添加到.你能帮我一个更好的逻辑吗?1,2,31,1,1,1


lis = [1,2,3,4,-1,1,1,1,1,-1,1,2,3]

sum = 0

newlis = []

    for i in range(0,len(lis)-1):

        if lis[i] == -1:

            while i+1 < len(lis) and lis[i+1]!=-1:

                sum = sum+lis[i+1]

                i = i+1

print(sum)


莫回无
浏览 90回答 4
4回答

LEATH

您可以使用:idx = [i for i, v in enumerate(lis, 1) if v == -1]print(sum(lis[idx[0]:idx[1]-1]))# 4

FFIVE

下面是一个无需工作的示例lambdalis = [1,2,3,4,-1,1,1,1,1,-1,1,2,3]first = lis.index(-1) + 1second = lis[first:].index(-1) + firstresult = sum(lis[first:second])

眼眸繁星

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

蛊毒传说

您可以使用 来查找第一个 -1。它还提供了第二个参数,用于从何处开始搜索,因此您也可以使用它来查找第二个 -1。然后只需获取它们之间的切片并求和即可。lis.index>>> start = lis.index(-1) + 1>>> stop = lis.index(-1, start)>>> sum(lis[start:stop])4
随时随地看视频慕课网APP

相关分类

Python
我要回答