Как перемножить числа в списке?
пользователь вводит любые числа в строку которые добавляются в список сумму можно найти sum(spisok) а как найти произведение? можно вроде циклом через for а если например в одну строку как реализовать?
9 ответов 9
Раньше можно было использвать reduce(). Сейчас тоже можно, но эту функцию вынесли в отдельный модуль, так что строго говоря, считая импорт, получается две строчки:
import functools print (functools.reduce(lambda a, b : a * b, lst))
@Danis Я сам сделал, потому что код не мой и есть на многих страницах в интернете как иллюстрация к reduce()
Все ответы здесь отстали от современности. Как насчет python-3.8 и выше?
math.prod
import math math.prod([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
Это пожалуй самое простое и стандартное решение ИМХО.
from functools import reduce # Функция для свёрки последовательности from operator import mul # Функция, перемножающая 2 числа spisok = [16, 15, 9, 14, 13] # Исходный список result = reduce(mul, spisok) # /\ Список для свёртки # /\ Используем умножение # /\ Сворачиваем контейнер
Можно реализовать функцию mul
def mul(list_): n = 1 for el in list_: n *= el return n
либо так, с помощью lambda и рекурсии
mul = lambda arr:arr[0] * mul(arr[1:]) if arr else 1
import numpy as np result = np.prod(np.array(mylist))
let num = Number(prompt()) let lis = [] let mult = [] while (num) < num = Number(prompt()) lis.append(num) >var m = 1 for (let n = 0; n
)) правда, не обратил внимание, но это в целом не сложно должно быть переделать, если видишь на одном языке
Если очень захотеть, то можно и в одну строчку записать, но так конечно делать не стоит , например перемножить ‘2 3 4 5’ = 120
print(list(map(lambda s, t=[1]: [t.append(i*t[-1]) for i in map(int, s.split())][0] or t[-1], ['2 3 4 5']))[0]) # 120
Я приведу не очень практичное, но красивое решение в одну строку. Оно не использует eval , побочные эффекты при работе со списком или именованные функции.
Если именованные функции разрешены, то решение может выглядеть так:
def p(a): if a: return a[0] * p(a[1:]) return 1 print(p([1, 2, 3, 4, 5]))
Нам оно не подходит, так именованная функция требует минимум две строки для определения и вызова. Лямбду можно определить и вызвать в одной строке, но есть трудность в создании рекурсивной лямбды. Синтаксис Python разрешает такой трюк:
p = (lambda a: a[0] * p(a[1:]) if a else 1); print(p([1, 2, 3, 4, 5]))
Это именно трюк с глобальной переменной и двумя операторами в одной строке. А можно обойтись без глобальной переменной вообще. На первый взгляд этого не может быть так как имя нужно чтобы сделать рекурсивный вызов. Но функцию можно передать как аргумент в саму себя:
p = lambda f, a: a[0] * f(f, a[1:]) if a else 1 print(p(p, [1, 2, 3, 4, 5]))
Кажется мы ничего не выиграли: всё равно два оператора и глобальная переменная p . Однако сделан очень важный шаг — тело лямбды не использует глобальные переменные. Глобальная переменная используется в операторе print . Избавимся от неё:
p = lambda f, a: a[0] * f(f, a[1:]) if a else 1 y = lambda f, a: f(f, a) print(y(p, [1, 2, 3, 4, 5]))
Стало только хуже: три строки и две глобальные переменные. Зато каждая глобальная переменная задействована только один раз. Делаем подстановку:
print((lambda f, a: f(f, a))(lambda f, a: a[0] * f(f, a[1:]) if a else 1, [1, 2, 3, 4, 5]))
Читается тяжело, но задача решена в одну строку без глобальных имён и волшебных вызовов eval .
P.S. Читайте Fixed-point combinator чтобы узнать откуда пошло это решение.
P.P.S. Красивое утверждение: программу любой сложности можно записать в функциональном стиле не определив ни одной глобальной переменной, включая имена функций.
P.P.P.S. Не пытайтесь повторить это дома.
Произведение всех чисел
Массив: Найти произведение всех чисел, стоящих на местах, кратных 4, и количество чисел, небольших заданного A.
Задан массив чисел: Найти произведение всех чисел, стоящих на местах, кратных 4, и количество.
Факториал: произведение всех целых чисел от 1 до 9
Помогите решить задачу! Напишите программу, которая выводит произведение всех целых чисел от 1 до.
Найти произведение всех чисел, кратных 8 или 6
Даны натуральные числа от 1 до n включительно. Необходимо написать программу, которая позволяет.
Произведение всех введенных пользователем чисел, исключая нули
Надо написать программу, чтобы находить произведение всех введенных пользователем чисел, исключая.
A = int(input("Введите А ")) B = int(input("Введите B ")) print(A * B)
print(int(input("Введите А ")) * int(input("Введите B ")))
Сообщение было отмечено mik-a-el как решение
Решение
Сообщение от Chug Jug
— подозреваю, что ТС имел в виду «произведение всех чисел между A и B».
import numpy a=int(input()) b=int(input()) n=numpy.prod(range(a,b+1)) print(n)
Найти произведение всех целых
Факториал: произведение всех целых чисел от 1 до 9
Помогите решить задачу! Напишите программу, которая выводит произведение всех целых чисел от 1 до.
Даны два целых числа A и В, A > B. Выведете произведение всех чисел от А до В.
Даны два целых числа A и В, A > B. Выведете произведение всех чисел от А до В. Пример: А = 2, В.
Найти произведение целых от 2 до 40, кратных трем
Помогите, я не разобрался в стандартных циклах
Найти произведение целых чисел из промежутка от 10 до 99, кратных 9 и заканчивающихся на 1 или 6
Найти произведение целых чисел из промежутка от 10 до 99, кратных 9 и заканчивающихся на 1 или 6.
#!/usr/bin/env python # -*- coding: utf-8 -*- n = 1 for i in range(8, 16): n *= i print n
#!/usr/bin/env python # -*- coding: utf-8 -*- a = int(input("Введите число a: ")) n = 1 if 1 a and a 20 : for i in range(a, 21): n *= i print n else : print "Введите число от 1 до 20"
#!/usr/bin/env python # -*- coding: utf-8 -*- b = int(input("Введите число b: ")) n = 1 if 1 b and b 20 : for i in range(1, b + 1): n *= i print n else : print "Введите число от 1 до 20"
Сообщение было отмечено Пакетик чаю как решение
Решение
reduce(lambda x,y:x*y, range(a,b+1))
а как найти произведение чисел от a до b == c в цикле чтобы получилось в питоне
например:
30 — 2,3,5
потому что 2*3*5=30
Найти произведение всех минимумов в списке
Условие: Во всех задачах предполагается использование списка, заполненного 20 случайными числами в.
Найти сумму кубов всех целых чисел от 20 до 40
Найти сумму кубов всех целых чисел от 20 до 40.
Найти произведение всех нечетных элементов списка
Сгенерировать случайным образом список из N элементов, лежащие в диапазоне от 1 до 10. Вывести.
Найти произведение всех чисел, кратных 8 или 6
Даны натуральные числа от 1 до n включительно. Необходимо написать программу, которая позволяет.
Найти сумму, произведение и среднее арифметическое трёх целых чисел, введённых с клавиатуры
Всем привет. На курсе попалось такое простецкое задание Напишите программу, которая находит.
Даны три любых целых числа. Найти произведение нечетных, которые меньше 10
Даны три любых целых числа. Найти произведение нечетных, которые меньше 10. Заранее спасибо.
Найти сумму всех целых чисел от a до b, используя цикл for
1. Найти сумму всех целых чисел от a до b (значения a и b вводятся с клавиатуры; b ≥a). Решить.
Произведение всех чисел последовательности
Найти произведение последних цифр всех чисел последовательности, больших числа 13
Задача Дана непустая последовательность целых чисел, оканчивающаяся нулем. Ноль в.
Создать двумерный массив случайных чисел и вывести произведение всех простых чисел из него
Создать двумерный массив 15*3 случайных двузначных чисел и вывести произведение всех простых чисел.
В последовательности натуральных чисел найти количество всех чисел кратных 6 и заканчивающихся на 0
Напишите программу, которая в последовательности натуральных чисел определяет количество всех чисел.
Найти произведение всех чисел из этого промежутка, которые больше х, и сумму квадратов чисел, меньших х
Дан промежуток , a<b и число x, принадлежащее этому промежутку. Найти произведение всех чисел из.
Произведение всех отрицательных чисел
Составить программу, которая бы запрашивала Хнач и Хкон и определяла произведение всех.
Сообщение было отмечено Fel1x_ как решение
Решение
def prod(nums: list) -> int: res = 1 for i in nums: res *= i return res print(prod([3, 4, 5]))
print( eval( '*'.join( input('-> ').split() ) ) )
Сумма всех чисел последовательности
1. Дана непустая последовательность целых чисел, оканчивающаяся нулем. Найти: а) сумму всех чисел.
Найти произведение всех целых чисел от А до Б
2(Ввести два целых числа А и Б. Найти произведение всех целых чисел от А и Б.
Вычислить произведение последовательности целых чисел, вводимых пользователем с клавиатуры
Вычислить произведение последовательности целых чисел, вводимых пользователем с клавиатуры.
Найти сумму всех нечетных чисел последовательности
Дана непустая последовательность целых чисел, оканчивающаяся нулем. Найти сумму всех нечетных чисел.
Найти сумму всех нечетных чисел последовательности
Дана непустая последовательность целых чисел, оканчивающаяся нулем. Найти сумму всех нечетных чисел.
Найдите произведение всех чисел расположенных на главной диагонали
Здравствуйте , Напишите программу , которая заполняет матрицу N-строк и N-столбцов.
Факториал: произведение всех целых чисел от 1 до 9
Помогите решить задачу! Напишите программу, которая выводит произведение всех целых чисел от 1 до 9. На python!
Вычислить произведение всех чисел от 1 до N (N! N-факториал)
1. На вход программе подается число N. Напишите программу для вычисления произведения всех чисел от.
Даны два целых числа А и В (A
помогите
Даны два целых числа А и В (A
Помогите Пожалуйста
1) Подсчитать произведение и количество всех неотрицательных чисел из 10 не целых чисел, введенных пользовател
1) Подсчитать произведение и количество всех неотрицательных чисел из 10 не целых чисел, введенных.
>>> from functools import reduce >>> from operator import mul >>> result = reduce(mul, range(1, 10)) >>> result 362880
>>> def factorial_func(x:int)->int: . result=1 . for i in range(1, x+1): . result*=i . return result . >>> factorial_func(9) 362880
>>> factorial = lambda x: 1 if x2 else factorial(x-1)*x >>> factorial(9) 362880
def factorial_recursion(x:int)->int: if x2: return 1 return factorial_recursion(x-1)*x
Сообщение было отмечено cemenow11 как решение
Решение
dondublon, этим методом можно, чтобы препод на олимпиаду не отправил 🙂
Arsegg, это называется «кэширование».
Добавлено через 1 минуту
Все способы перебрали?
А я знаю ещё один :
from math import factorial
dondublon, не, я еще с генератором хотел запилить, по после
print(1*2*3*4*5*6*7*8*9)
и
print(362880)
это уже как-то кисловато будет смотреться)
dondublon, я полагаю это к тому что в классе math должен быть только один метод факториал, в любом другом модуле только 1 метод для добавления 1 для удаления и так далее, чтобы, получив либу, не гадать что же использовать и почему способа два.
In [1]: from math import gamma In [2]: factorial = lambda x: gamma(x + 1) In [3]: factorial(9) Out[3]: 362880.0 In [4]: factorial(9.5) Out[4]: 1133278.3889487854
Найти произведение всех целых чисел
Помогите составить программу)) Найти произведение всех целых чисел, кратных 7, из отрезка .
Найти произведение всех целых чисел от 8 до 15
Найти произведение всех целых чисел от 8 до 15 Произведение всех целых чисел от а до 20.
Найти произведение всех целых чисел от 8 до 15
Найти произведение всех целых чисел от 8 до 15 спасибо заранее
Найти произведение всех целых чисел от 1 до b
https://www.cyberforum.ru/attachments/462372d1417711307 помогите решить
найти произведение всех целых чисел
найти произведение всех целых чисел от а до 20 (значение а вводится с клавиатуры; (1 <a <20). Как.
Найти произведение всех целых чисел от 1 до b
Помогите написать, пожалуйста. Нужно найти произведение всех целых чисел от 1 до b (значение b.