Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 28.10.2022
Сообщений: 27

Для каждой нечетной строки массива вычислить произведение ненулевых элементов кратных 5 и 7

19.12.2022, 12:08. Показов 1148. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан двумерный массив, состоящий из N*M целых чисел. Для каждой нечетной строки массива вычислить произведение
ненулевых элементов кратных 5 и 7.

Массив реализовать с помощью списков и заполнить его целыми числами случайным образом.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.12.2022, 12:08
Ответы с готовыми решениями:

Для каждой нечетной строки массива вычислить произведение ненулевых элементов кратных 5 и 7
реализовать с помощью списков двумерный массив размерности N*M; • массив заполнить целыми числами случайным образом; • во всех случаях...

Вычислить произведение ненулевых элементов массива b[1..5,1..5], кратных 5
Вычислить произведение ненулевых элементов массива b, кратных 5

Вычислить произведение ненулевых элементов массива, кратных 5 и 7
Вычислить произведение ненулевых элементов массива, кратных 5 и 7.

17
132 / 96 / 40
Регистрация: 24.03.2022
Сообщений: 357
19.12.2022, 13:13
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import random as ran
 
n, m = map(int, input().split())
array = [[ran.randint(0,100) for _ in range(m)] for _ in range(n)]
list1 = []
for i in range(len(array)):
    pr = 1
    if i % 2 != 0:
        for k in array[i]:
            if k > 0 and (k % 5 == 0 or k % 7 == 0):
                pr = pr*k
        list1.append(pr)
    pr = 1
ran.shuffle(list1)
print(list1)
0
740 / 622 / 151
Регистрация: 04.03.2022
Сообщений: 1,272
19.12.2022, 13:20
Python
1
2
3
4
5
6
7
from math import prod
from random import randint
n, m = 10, 15
a = [[randint(1, 50) for _ in range(m)] for _ in range(n)]
print(*a, sep='\n')
for l in a[1::2]:
    print(prod(x for x in l if x%5==0 or x%7==0))
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
19.12.2022, 14:27
Python
1
2
3
4
5
6
import numpy as np
 
n, m = 10, 15
arr = np.random.randint(0, 30, (n, m))
print(arr)
print(np.prod(np.where((arr%5==0)|(arr%7==0), arr, 1)[1::2], 1))
Добавлено через 19 минут

Не по теме:

Gdez, u235, как избавиться от where? Чувствую, что можно, а как - не пойму


1
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
19.12.2022, 15:06
iSmokeJC,
Можно так. Кстати, у вас небольшая ошибка, нулевые элементы тоже на 1 надо заменять..
Python
1
2
3
b=arr[1::2]
b[(b%7!=0)&(b%5!=0)|(b==0)]=1
print(np.prod(b, 1))
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
19.12.2022, 15:08
u235, да, через временный промежуточный (b) у меня тоже получилось. Интересно было в однострочник загнать
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
19.12.2022, 15:16
Лучший ответ Сообщение было отмечено iSmokeJC как решение

Решение

Еще вариант, prod допускает маскирование.
Python
1
np.prod(k:=arr[1::2],1,where=((k%7==0)|(k%5==0)))
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
19.12.2022, 15:21
u235, во! Огонь!

Добавлено через 50 секунд
Цитата Сообщение от u235 Посмотреть сообщение
k:=arr

Не привык я еще к этой фиче...
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
19.12.2022, 15:22
так правильнее:
Python
1
np.prod(k:=arr[1::2],1,where=(((k%7==0)|(k%5==0))&(k!=0)))
2
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
19.12.2022, 16:10
И все таки where «дорогая» операция
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 import numpy as np
from time import time
 
t = time()
n, m = 10, 15
arr = np.random.randint(0, 30, (n, m))
#print(arr)
res = np.prod(k:=arr[1::2],1,where=(((k%7==0)|(k%5==0))&(k!=0)))
print(time()-t)
print(res)
 
t = time()
arr[(arr%5 != 0)&(arr%7 != 0)|(arr == 0)] = 1 
res = np.multiply.reduce(arr[1::2], 1)
print(time()-t)
print(res)
1
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
19.12.2022, 16:32
Gdez, вы наверное что-то хотели показать, но не очень получилось.
Да и вообще c numpy осторожно надо быть. Тут целые числа ограничены. Попробуйте m=50 посчитать.
1
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
19.12.2022, 16:38
Red white socks, ?
Я хотел лишь показать, что where «долгая» операция, а ограничение в размерности чисел в NumPy - известная проблема…
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
19.12.2022, 16:43
Цитата Сообщение от Gdez Посмотреть сообщение
Я хотел лишь показать, что where «долгая» операция,
Gdez, это подразумевается, только вот результатами сейчас не подтверждается.
И лучше здесь timeit использовать
1
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
19.12.2022, 17:22
Red white socks, Так?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 import timeit
 
import numpy as np 
n, m = 10, 15
arr = np.random.randint(0,9, (n, m))
 
 
def wrapper(func, *args, **kwargs):                                                                   
    def wrapper():                                                                                    
        return func(*args, **kwargs)                                                                  
    return wrapper                                                                                                                                                  
 
def fun_1(arr):
    res = np.prod(k:=arr[1::2],1,where=(((k%7==0)|(k%5==0))&(k!=0)))
 
def fun_2(arr):
    arr[(arr%5 != 0)&(arr%7 != 0)|(arr == 0)] = 1 
    res = np.multiply.reduce(arr[1::2], 1)
 
 
wrapped = wrapper(fun_1, arr)                                                                  
print(timeit.timeit(wrapped, number=100000))
wrapped = wrapper(fun_2, arr)                                                                  
print(timeit.timeit(wrapped, number=100000))
Возможно ошибся
2
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
19.12.2022, 17:29
Gdez, спасибо. Вот сейчас видно)
1
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
19.12.2022, 17:31
Red white socks, Вам, спасибо!
1
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
19.12.2022, 18:24
Gdez, Вот так быстрее будет:
Python
1
2
3
4
def fun_2(arr2):
    arr=arr2[1::2]
    arr[(arr%5 != 0)&(arr%7 != 0)|(arr == 0)] = 1 
    res = np.multiply.reduce(arr, 1)
1
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
19.12.2022, 18:30
u235, Да
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.12.2022, 18:30
Помогаю со студенческими работами здесь

Вычислить произведение ненулевых элементов массива, кратных 3
Здравствуйте Друзья! Дали непростое задание: 1. Заполнить массив случайными числами. 2. Найти минимальный отрицательный элемент. ...

Для каждой чётной строки матрицы подсчитать сумму её элементов, а для каждой нечётной строки- произведение её элементов
Дана прямоугольная матрица m на n . Для каждой чётной строки подсчитайте сумму её элементов, а для каждой нечётной строки- произведение её...

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

Вычислить произведение ненулевых элементов каждой строки матрицы
Дана матрица A(n,n) Вычислить произведение ненулевых элементов каждой строки матрицы

Вычислить и напечатать произведение отличных от нуля элементов каждой нечетной строки заданой матрицы AO.
Вычислить и напечатать произведение отличных от нуля элементов каждой нечетной строки заданой матрицы AO. Заранее спасибо за помощь !


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru