Как найти произведение всех элементов массива python
Перейти к содержимому

Как найти произведение всех элементов массива python

  • автор:

Как найти произведение элементов списка после максимального элемента?

phaggi

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

Michelin123 @Michelin123 Автор вопроса

Алан Гибизов,
a=[20,4,35,3,4]
mult=([a[i] for i in range(a. index(max(a))+1, len(a))])
Нужно вывести после максимального элемента произведение элементов, в этом случае 12, но нужна функция произведения, а как не знаю

phaggi

Алан Гибизов @phaggi Куратор тега Python

Michelin123, так может, тебе эту функцию и надо написать? А потом применить ее к своему однострочнику.

Решения вопроса 1

phaggi

Алан Гибизов @phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю

from functools import reduce a = [20, 4, 35, 3, 4] my_mult = reduce(lambda x, y: x * y, [a[i] for i in range(a.index(max(a)) + 1, len(a))])

так пойдет?
Ответ написан более трёх лет назад
Нравится 2 2 комментария

adugin

Andrey Dugin @adugin Куратор тега Python
reduce(mul, a[a.index(max(a))+1:])

phaggi

Алан Гибизов @phaggi Куратор тега Python
Andrey Dugin, Андрей, тогда для медленных вроде меня надо уж вот так:

from functools import reduce from operator import mul a = [20, 4, 35, 3, 4] print(reduce(mul, a[a.index(max(a))+1:], 1))

Действительно, всё ж есть, но лень было вспоминать, а вспоминать трудно, когда забыл, да ещё и не знал…

Ответы на вопрос 1
Шушуть люблю питон, по шушуть тыкаю где-то год.

Можно уточнить?
Что из себя представляет задача?
test_list = [1, 3, 7, 2, 6, 5]
7 — максимальный элемент в списке, все остальные после него перемножить, то есть 2 6 и 5?

Как перемножить числа в списке?

Пользователь вводит любые числа в строку, которые добавляются в список. Сумму можно найти так: sum(spisok) . А как найти произведение? Можно, вроде, циклом через for . А если, например, нужно в одну строку, то как реализовать?

Отслеживать
2,808 2 2 золотых знака 10 10 серебряных знаков 38 38 бронзовых знаков
задан 3 дек 2020 в 9:28
833 1 1 золотой знак 11 11 серебряных знаков 32 32 бронзовых знака

10 ответов 10

Сортировка: Сброс на вариант по умолчанию

Раньше можно было использвать reduce(). Сейчас тоже можно, но эту функцию вынесли в отдельный модуль, так что строго говоря, считая импорт, получается две строчки:

import functools print (functools.reduce(lambda a, b : a * b, lst)) 

Отслеживать
Я бы добавил ещё и третью строчку, с импортом оператора умножения =) Upd: А, это есть ниже)
3 дек 2020 в 11:30
а почему сделали общим?
3 дек 2020 в 14:12

@Danis Я сам сделал, потому что код не мой и есть на многих страницах в интернете как иллюстрация к reduce()

3 дек 2020 в 14:33

Все ответы здесь отстали от современности. Как насчет python-3.8 и выше?
math.prod

import math math.prod([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 

Это пожалуй самое простое и стандартное решение ИМХО.

Отслеживать
5,426 1 1 золотой знак 16 16 серебряных знаков 37 37 бронзовых знаков
ответ дан 21 дек 2020 в 11:51
USERNAME GOES HERE USERNAME GOES HERE
10.4k 21 21 золотой знак 25 25 серебряных знаков 53 53 бронзовых знака

from functools import reduce # Функция для свёрки последовательности from operator import mul # Функция, перемножающая 2 числа spisok = [16, 15, 9, 14, 13] # Исходный список result = reduce(mul, spisok) # /\ Список для свёртки # /\ Используем умножение # /\ Сворачиваем контейнер 

Отслеживать
ответ дан 3 дек 2020 в 10:16
Mikhail Murugov Mikhail Murugov
5,426 1 1 золотой знак 16 16 серебряных знаков 37 37 бронзовых знаков

Можно реализовать функцию 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 

Отслеживать
ответ дан 3 дек 2020 в 9:41
19.8k 6 6 золотых знаков 22 22 серебряных знака 56 56 бронзовых знаков
тут пять строк, не считая той, где это будет вызываться. Про for автор даже в вопросе сам написал.
3 дек 2020 в 9:42

С импортом можно и так:

import numpy as np result = np.prod(np.array(mylist)) 

Отслеживать
ответ дан 3 дек 2020 в 9:51
Serg Bocharov Serg Bocharov
1,714 1 1 золотой знак 6 6 серебряных знаков 11 11 бронзовых знаков
Тяжеленный numpy для таких простейших задач.
3 дек 2020 в 10:17
@МихаилМуругов вопрос-то был «а можно ли сделать в одну строку?» — вот и приводим разные примеры
3 дек 2020 в 10:43

let num = Number(prompt()) let lis = [] let mult = [] while (num) < num = Number(prompt()) lis.append(num) >var m = 1 for (let n = 0; n

Отслеживать
ответ дан 3 дек 2020 в 10:56
Alexander_Sky Alexander_Sky
87 1 1 серебряный знак 8 8 бронзовых знаков
А где тут python?
3 дек 2020 в 10:58
а как это все записать в одну строчку?
3 дек 2020 в 11:01
@Эникейщик это даже не python))
3 дек 2020 в 11:01

)) правда, не обратил внимание, но это в целом не сложно должно быть переделать, если видишь на одном языке

3 дек 2020 в 11:02
@Alexander_Sky Ничего, я тут тоже поначалу путался где какой язык )) А надо на тэги смотреть
3 дек 2020 в 11:17

Я приведу не очень практичное, но красивое решение в одну строку. Оно не использует 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. Не пытайтесь повторить это дома.

Python. Сумма и произведение элементов списка

Сами сначала поясняйте — что за список и откуда он берётся? С последовательностью целых чисел, вводимых одной строкой через пробел и вычислениями циклическим обходом списка, предварительно заданного генератором:

p, s = 1, 0
A = [int(i) for i in input().split()]
for a in A: s += a; p *= a
print('Сумма списка:', s)
print('Произведение:', p)

Максим ГаснашМастер (1304) 1 год назад

Я бы пояснил, но то что в кавычках это всё что у меня есть из информации

Танюша ЩербининаУченик (168) 1 год назад

это не работает

Ксения Райт Гений (86418) Танюша Щербинина, да? И что же здесь не работает?

Произведение элементов списка

Author24 — интернет-сервис помощи студентам

Добрый вечер, нужна помощь с вычислением произведения всех числа списка
n = int(input(«Введите длину списка:»))
a = []
for i in range(0, n):
element = int(input(«Введите элемент списка:»))
a.append(element)
print(«Весь список:»)
print(a)
print(«Сумма элементов списка равна:»)
b = sum(a)
print(b)

Лучшие ответы ( 3 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

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

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

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

Найти произведение всех нечетных элементов списка
Сгенерировать случайным образом список из N элементов, лежащие в диапазоне от 1 до 10. Вывести.

1187 / 763 / 277
Регистрация: 05.09.2021
Сообщений: 1,772

Лучший ответ

Сообщение было отмечено llenkal как решение

Решение

1 2 3 4 5 6
from math import prod arr = [int(input('Введите элемент списка: ')) for i in range(int(input('Введите длину списка: ')))] print(f'Весь список: ') print(f'Сумма элементов списка равна: ') print(f'Произведение элементов списка: ')

Регистрация: 10.06.2020
Сообщений: 33
Спасибо, но есть проблема с visual studio
1187 / 763 / 277
Регистрация: 05.09.2021
Сообщений: 1,772

Лучший ответ

Сообщение было отмечено llenkal как решение

Решение

1 2 3 4 5 6 7 8 9
arr = [int(input('Введите элемент списка: ')) for i in range(int(input('Введите длину списка: ')))] prod = 1 for i in arr: prod *= i print(f'Весь список: ') print(f'Сумма элементов списка равна: ') print(f'Произведение элементов списка: ')

Регистрация: 10.06.2020
Сообщений: 33
Спасибо большое) все работает.

Эксперт Python

5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1

Лучший ответ

Сообщение было отмечено llenkal как решение

Решение

ЦитатаСообщение от llenkal Посмотреть сообщение

Спасибо, но есть проблема с visual studio
Поставь Python 3.8\3.9\3.10 и будет тебе math.prod и куча всего нового.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Найдите сумму и произведение элементов списка. Результаты вывести на экран
Найдите сумму и произведение элементов списка. Результаты вывести на экран.

Произведение элементов списка, расположенных между первым и вторым нулевыми элементами
В списке, состоящем из целых элементов, вычислить: # произведение элементов списка.

В списке, состоящем из целых элементов, вычислить произведение элементов списка с четными номерами
Помогите решить 2. В списке, состоящем из целых элементов, вычислить: 1. произведение элементов.

Произведение всех элементов списка
дан список найдите произведение всех элементов списка помогите пожалуйста!

Найдите сумму и произведение элементов списка. Результаты вывести на экран
Найдите сумму и произведение элементов списка. Результаты вывести на экран. Блок схему ещё

Найти и напечатать произведение отрицательных элементов списка и сами эти элементы
Найти и напечатать произведение отрицательных элементов списка и сами эти элементы. D =

Или воспользуйтесь поиском по форуму:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *