Как поделить элементы списка друг на друга?

Рейтинг: 1Ответов: 3Опубликовано: 02.08.2023

Условно, у меня есть список [5, 7, 9, 14]. Каждый раз количество и сами элементы меняются. Как с помощью цикла for сделать так, чтобы элементы поделились друг на друга? (5/7/9/14=0.0566...) Если с помощью цикла for не получается, то как в целом возможно это сделать?

Ответы

▲ 3Принят

Если с помощью цикла for не получается, ...

Получается :-) :

lst = [5, 7, 9, 14]

result = lst[0]                      # делимое

for element in lst[1:]:              
    result /= element                # то же самое, как result = result / element

print(result)                        # тест

Вывод:

0.005668934240362812

Объяснение:

lst[1:] есть список элементов из списка lst за исключением первого элемента.
Этими элементами — делителями — постепенно делим в цикле первый элемент списка lst — делимое.

▲ 1

Без цикла - с применением стандартных модулей itertools и operator:

from itertools import accumulate           # постепенное применение операции
from operator import itruediv              # обычное деление, напр. itruediv(3, 2) == 1.5

lst = [36, 2, 3, 4]

all_quotiеnts = accumulate(lst, itruediv)  # все промежуточные результаты делении
results = list(all_quotiеnts)              # перевод итератора в список
result = results[-1]                       # последний элемент - финальный результат

print(results)                             # промежуточные результаты (только для понятия)
print(result)
[36, 18.0, 6.0, 1.5]
1.5
▲ 1

Можно сделать с функцией reduce() и лямбдой:

from functools import reduce

l = [5, 7, 9, 14]

print(reduce(lambda a, b : a / b, l))