Сумма элементов списка, расположенных между первым и последним положительным элементами

Задание: в списке целых, заполненном случайными числами вычислить сумму элементов, находящихся между первым и последним положительными элементами. Столкнулась с такой проблемой: первую часть задания я сделала (по нахождению чётных элементов), а вторую не могу (при добавлении нового массива происходит ошибка). Помогите, пожалуйста.

import random
randlist = []
lst = []
for i in range(3):
    n = random.randint(-10,30)
    randlist.append(n)
print(randlist)
positive = 0
for i in range(len(randlist)):
    if randlist[i] > 0:
        positive+= randlist[i]
print (positive)
for i in range(positive[1],positive[-1]):
    lst += positive
print (lst)

Ответы (2 шт):

Автор решения: vadim vaduxa

Если вопрос звучит так "Сумма элементов списка, расположенных между первым и последним положительным элементами", то судя по каментам, задача понята неверно:

эта сумма не должна включать границы "первым и последним", раз явно не указано

эта сумма любых элементов, а не только положительных

lt = [-1, 1, 3, -4, 4, -5, -6, 9, -5, -9, ]
s1 = s2 = 0
for s1, a in enumerate(lt):
    if a > 0:
        break  # определить индекс первого положительного элемента
for s2, a in enumerate(reversed(lt)):
    if a > 0:
        break  # определить индекс последнего положительного элемента
s = sum(lt[s1+1: -s2-1])  # взять сумму между индексами
print(s)
→ Ссылка
Автор решения: Namerek
from itertools import dropwhile
from random import choices

data = choices(range(-10, 10), k=20)
print(data)
print(
    sum(
        list(
            dropwhile(
                lambda x: x <= 0, 
                reversed(
                    list(
                        dropwhile(
                            lambda x: x <= 0, 
                            data
                        )
                    )[1:]
                )
            )
        )[1:]
    )
)

Если считать 0 положительным числом нужно исправить сравнение в обеих лямбдах


[-3, 6, -7, -10, -10, -2, -3, -4, 0, 3, 9, 3, -2, -9, -4, -2, 7, 6, -1, 8]
-26

Материал по теме
choices
dropwhile


UPD -> для наглядности

from itertools import dropwhile
from random import choices

data = choices(range(-10, 10), k=10)

print(f'{data = }')
# data = [-9, 5, -1, 1, 2, 3, -2, 4, -4, 4]

cut_left = list(
    dropwhile(
        lambda x: x <= 0,
        data
    )
)[1:]

print(f'{cut_left = }')
# cut_left = [-1, 1, 2, 3, -2, 4, -4, 4]

desired = list(
    dropwhile(
        lambda x: x <= 0,
        reversed(
            cut_left
        )
    )
)[1:]

print(f'{desired = }')

# desired = [-4, 4, -2, 3, 2, 1, -1]
# !!! Здесь список в обатном порядке
# Но нам на это пофиг ;-)

print(
    f'{sum(desired) = }'
)
# sum(desired) = 3
→ Ссылка