Функция произведение чисел python

Как я могу умножить все элементы в списке вместе с Python?

Мне нужно написать функцию, которая принимает
a список чисел и умножает их вместе. Пример:
[1,2,3,4,5,6] даст мне 1*2*3*4*5*6 . Я действительно могу использовать вашу помощь.

Python 3: используйте functools.reduce :

>>> from functools import reduce >>> reduce(lambda x, y: x*y, [1,2,3,4,5,6]) 720 

Python 2: используйте reduce :

>>> reduce(lambda x, y: x*y, [1,2,3,4,5,6]) 720 

Для совместимости с 2 и 3 используйте pip install six , затем:

>>> from six.moves import reduce >>> reduce(lambda x, y: x*y, [1,2,3,4,5,6]) 720 
import operator import functools functools.reduce(operator.mul, [1,2,3,4,5,6], 1) 

Смотрите reduce и operator.mul документация для объяснения.

Вам нужна строка import functools в Python 3 +.

Я бы использовал numpy.prod для выполнения задачи. См. Ниже.

import numpy as np mylist = [1, 2, 3, 4, 5, 6] result = np.prod(np.array(mylist)) 

Если вы хотите избежать импорта чего-либо и избежать более сложных областей Python, вы можете использовать простой цикл

product = 1 # Don't use 0 here, otherwise, you'll get zero # because anything times zero will be zero. list = [1, 2, 3] for x in list: product *= x 

Мне лично это нравится для функции, которая объединяет все элементы общего списка:

def multiply(n): total = 1 for i in range(0, len(n)): total *= n[i] print total 

Он компактный, использует простые вещи (переменную и цикл for) и чувствует себя интуитивно понятным для меня (похоже, как я думаю об этой проблеме, просто возьмите ее, умножьте ее, затем умножьте на следующую и и так далее!)

Вот некоторые измерения производительности от моей машины. Относится к случаю, если это выполняется для небольших входов в длительном цикле:

import functools, operator, timeit import numpy as np def multiply_numpy(iterable): return np.prod(np.array(iterable)) def multiply_functools(iterable): return functools.reduce(operator.mul, iterable) def multiply_manual(iterable): prod = 1 for x in iterable: prod *= x return prod sizesToTest = [5, 10, 100, 1000, 10000, 100000] for size in sizesToTest: data = [1] * size timerNumpy = timeit.Timer(lambda: multiply_numpy(data)) timerFunctools = timeit.Timer(lambda: multiply_functools(data)) timerManual = timeit.Timer(lambda: multiply_manual(data)) repeats = int(5e6 / size) resultNumpy = timerNumpy.timeit(repeats) resultFunctools = timerFunctools.timeit(repeats) resultManual = timerManual.timeit(repeats) print(f'Input size: 7d> Repeats: 8d> Numpy: , Functools: , Manual: ') 
Input size: 5 Repeats: 1000000 Numpy: 4.670, Functools: 0.586, Manual: 0.459 Input size: 10 Repeats: 500000 Numpy: 2.443, Functools: 0.401, Manual: 0.321 Input size: 100 Repeats: 50000 Numpy: 0.505, Functools: 0.220, Manual: 0.197 Input size: 1000 Repeats: 5000 Numpy: 0.303, Functools: 0.207, Manual: 0.185 Input size: 10000 Repeats: 500 Numpy: 0.265, Functools: 0.194, Manual: 0.187 Input size: 100000 Repeats: 50 Numpy: 0.266, Functools: 0.198, Manual: 0.185 

Вы можете видеть, что Numpy немного медленнее при меньших входах, поскольку он выделяет массив перед выполнением умножения. Также следите за переполнением в Numpy.

import numpy as np np.exp(np.log(your_array).sum()) 

Начиная с Python 3.8 , функция prod была включена в модуль math в стандартной библиотеке:

который возвращает произведение значения start (по умолчанию: 1), умноженное на итерируемое число:

import math math.prod([1, 2, 3, 4, 5, 6]) # 720 

Обратите внимание, что если итерация пуста, будет получено значение 1 (или значение start , если оно предусмотрено).

Нашел этот вопрос сегодня, но я заметил, что он не имеет случая, когда в списке есть None . Таким образом, полным решением будет:

from functools import reduce a = [None, 1, 2, 3, None, 4] print(reduce(lambda x, y: (x if x else 1) * (y if y else 1), a)) 

В случае сложения мы имеем:

print(reduce(lambda x, y: (x if x else 0) + (y if y else 0), a)) 
nums = str(tuple([1,2,3])) mul_nums = nums.replace(',','*') print(eval(mul_nums)) 

Я хотел бы это следующим образом:

 def product_list(p): total =1 #critical step works for all list for i in p: total=total*i # this will ensure that each elements are multiplied by itself return total print product_list([2,3,4,2]) #should print 48 
def product_list(list_of_numbers): xxx = 1 for x in list_of_numbers: xxx = xxx*x return xxx print(product_list([1,2,3,4])) 

результат: (‘1 * 1 * 2 * 3 * 4’, 24)

var=1 def productlist(number): global var var*=number list(map(productlist,[1,2,4])) print(var) 

Вы можете сделать это с помощью карты

Мое решение для умножения элементов в кортеже или списке

a = 140,10 val = 1 for i in a: val *= i print(val) 
def multiply(numbers): a = 1 for num in numbers: a *= num return a pass 

Numpy имеет функцию prod, которая возвращает произведение списка, или, в данном случае, так как это numpy, технически это произведение массива по заданной оси.

import numpy a = [1,2,3,4,5,6] b = numpy.prod(a) 

другой просто играет на том, как вы импортируете:

from numpy import prod a = [1,2,3,4,5,6] b = prod(a) 
def multiply(numbers): total = numbers[0] for num in numbers: total *= num return total 

Как насчет использования рекурсии?

def multiply(lst): if len(lst) > 1: return multiply(lst[:-1])* lst[-1] else: return lst[0] 

Это очень просто, ничего не импортировать. Это мой код Это определит функцию, которая умножает все элементы в списке и возвращает их продукт.

def myfunc(lst): multi=1 for product in lst: multi*=product return product 

Источник

Методы и способы вычисления произведения элементов списка в Python

Методы и способы вычисления произведения элементов списка в Python

Списки — это основная структура данных в Python, и они встречаются практически в каждом проекте. В этой статье мы рассмотрим, как вычислить произведение всех элементов списка в Python.

Простой подход: использование цикла for

Наиболее простым и понятным способом вычисления произведения всех элементов списка является использование цикла for . Вот базовый код для этого:

my_list = [1, 2, 3, 4, 5] product = 1 for num in my_list: product *= num print(product) #120

Использование функции reduce из модуля functools

Модуль functools в Python содержит функцию reduce() , которая позволяет применить функцию к каждому элементу списка таким образом, чтобы получить одно единственное значение. В нашем случае мы можем использовать reduce() для вычисления произведения всех элементов списка:

from functools import reduce import operator my_list = [1, 2, 3, 4, 5] product = reduce(operator.mul, my_list) print(product) #120

Обратите внимание, что мы используем operator.mul в качестве функции для reduce() . Эта функция выполняет операцию умножения.

Использование библиотеки NumPy

Если вы работаете с числовыми данными, возможно, вы уже знакомы с библиотекой NumPy . Эта библиотека предоставляет множество функций для работы с числовыми данными, включая функцию prod() , которая вычисляет произведение элементов массива:

import numpy as np my_list = [1, 2, 3, 4, 5] product = np.prod(my_list) print(product) #120

Заключение

Вычисление произведения элементов списка является общей задачей в Python. Мы рассмотрели несколько различных подходов, включая использование цикла for , функции reduce() из модуля functools и функции prod() из библиотеки NumPy . Каждый из этих подходов имеет свои собственные преимущества и может быть наиболее подходящим в зависимости от конкретной ситуации.

Стоит также помнить о важности обработки исключений при работе с числовыми данными. В Python предусмотрено множество различных исключений, которые могут возникнуть при выполнении математических операций, и правильная их обработка позволяет избежать ошибок и неожиданного поведения программы.

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

Глобальные переменные и global в Python

Глобальные переменные и global в Python

Изучаем метод replace() в Python: простой способ замены подстрок

Изучаем метод replace() в Python: простой способ замены подстрок

Как использовать метод upper() в Python для преобразования текста в верхний регистр

Как использовать метод upper() в Python для преобразования текста в верхний регистр

Однострочные и многострочные комментарии в Python + рекомендации использования

Однострочные и многострочные комментарии в Python + рекомендации использования

Основные методы перебора списка в Python

Основные методы перебора списка в Python

Как использовать метод keys() для словарей в Python

Как использовать метод keys() для словарей в Python

Источник

Нахождение произведения двух чисел с использованием рекурсии

Программа принимает на вход два числа и при помощи рекурсии находит их произведение.

Решение задачи

  1. Принимаем на вход два числа и записываем их в отдельные переменные.
  2. Передаем эти переменные в качестве аргументов в рекурсивную функцию.
  3. В начале работы функции проверяем, является ли первый аргумент меньше второго. Если является, то вызываем данную функцию вновь, меняя аргументы местами.
  4. В качестве базового условия рекурсии принимаем равенство 0 второго аргумента функции (меньшего). Пока второй аргумент не равен 0 , функция возвращает сумму первого аргумента и рекурсивный вызов самой себя, где второй аргумент уменьшается на 1 .
  5. Когда второй аргумент уменьшится до 0 , функция при последнем вызове возвратит 0 и ее работа завершится.
  6. Выводим результат на экран.
  7. Конец.

Исходный код

Объяснение работы программы

  1. Пользователь вводит два числа и они записываются в переменные a и b .
  2. Передаем эти переменные в качестве аргументов в рекурсивную функцию product() .
  3. В начале работы функции проверяем, какой из аргументов больше. Если первый аргумент меньше второго, то вызываем данную функцию вновь, меняя аргументы местами, то есть product(b, a) .
  4. В качестве базового условия рекурсии принимаем равенство 0 второго аргумента функции (меньшего). Пока второй аргумент не равен 0 , функция возвращает сумму первого аргумента и рекурсивный вызов самой себя, где второй аргумент уменьшается на единицу: a + product(a, b-1) .
  5. Когда второй аргумент уменьшится до 0 , функция при последнем вызове возвратит 0 и ее работа завершится. Таким образом, мы в результате накопили сложение числа a c самим собой ровно b раз, что как раз эквивалентно умножению a на b .
  6. Выводим результат на экран.

Результаты работы программы

Пример 1: Введите первое число: 12 Введите второе число: 10 Произведением двух чисел будет: 120 Пример 2: Введите первое число: 12 Введите второе число: 11 Произведением двух чисел будет: 132

Источник

Читайте также:  Джек победитель великанов python
Оцените статью