Как упростить в одной строке цикл FOR умножения чисел списка? - PullRequest
1 голос
/ 25 апреля 2019

Я хочу получить результат умножения всех чисел в списке, используя цикл for, записанный в одну строку, ИЛИ используя функцию Lambda

Я решил это легко, используя классический цикл for, но я хочу упростить выражение. Идея не в том, чтобы использовать библиотеки.

Мой текущий код:

num_list = [5,7,3,8]

R = 1;
for num in num_list:
    R *= num

print(R)
>>> 840

Что я пробовал:

R=1
R = [R*=num for num in num_list ]
       ^
SyntaxError: invalid syntax

Я ожидаю получить то же значение (= 840) при упрощении выражения

1 Ответ

1 голос
/ 25 апреля 2019

Вы можете сделать это с помощью уменьшите и оператор :

from functools import reduce
import operator

num_list = [5,7,3,8]
reduce(operator.mul, num_list)

In Python 3.8 (будет выпущен в следующем году), см. здесь :

Добавлена ​​новая функция math.prod () в качестве аналога функции sum (), которая возвращает произведение значения «start» (по умолчанию: 1) итеративное чисел. (Предоставлено Пабло Галиндо в bpo-35606)

так что вы сможете сделать math.prod(num_list)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...