Как рассчитать сумму модулей элементов массива, расположенных после первого отрицательного числа?
Имеем:
import random
a = float(input("Введите число, которое будет началом диапазона случайных чисел: "))
b = float(input("Введите число, которое будет концом диапазона случайных чисел: "))
rndlist = [random.randint(a, b) for i in range(8)] # Создаем и заполняем список, состоящий из случайных чисел
Далее, нужно найти через цикл for(я так предполагаю) первое отрицательно число в списке и убрать из списка это отрицательное число и все те числа, которые были до него и записать оставшиеся значения в новый список. В новом списке могут быть отрицательные числа, в лабораторной сделан акцент именно НА ВЫБРОСЕ ПЕРВОГО ОТРИЦАТЕЛЬНОГО И ЧИСЕЛ ДО НЕГО(<<<PLEASE HELP)
Далее, я имею новый список, и там уже понятно:
Привожу через for все числа внутри нового списка к модулю:
newlist = [abs(elem) for elem in newlist]
И нахожу сумму всех значений.
Ответы (2 шт):
примерно так:
index = rndlist.index(next(filter(lambda n:n < 0, rndlist)))
rndlist = rndlist[index + 1:]
rndlist = [abs(el) for el in rndlist]
print(sum(rndlist))
filter(lambda n:n < 0, rndlist)находим все элементы меньше нуляnext(...)берём первый элемент среди элементов меньших нуляrndlist.index(...)находим индекс элементаrndlist[index + 1:]берём все элементы после первого отрицательного[abs(el) for el in rndlist]берём модуль всех значенийsum(rndlist)находим сумму всех значений
from itertools import dropwhile
rndlist = [random.randint(-10, 10) for i in range(8)] # Входные данные
it = iter(rndlist) # Создаём итератор по списку
dropwhile_it = dropwhile(lambda x: x >= 0, it) # Создаём итератор, который будет выкидывать все элементы до тех пор, пока не встретит первый отрицательный
next(dropwhile_it) # Выбрасыааем первый отрицательный
result = sum(map(abs, dropwhile_it)) # Суммируем модули оставшихся элементов
Кстати, приводить input() к float, а затем скармливать это randint - не самая хорошая затея.
И учтите, что рандом может сгенерировать последовательность и без отрицательных элементов (или с одним отрицательным в конце списка).