Автор
Василий Малик
Senior Java-разработчик в CodeGym

Multiply у Python

Стаття з групи Вивчення Python

Вступ: Що таке оператор множення?

Привіт, сьогодні ми поринемо в те, що може здатися простим на перший погляд, але є основним для багатьох операцій у програмуванні: множення в Python. Незалежно від того, чи ви обробляєте числа, маніпулюєте рядками або працюєте з масивами, розуміння того, як працює множення в Python, відкриє перед вами цілий світ можливостей.

Ви можете подумати: «Умноження? Серйозно? Наскільки це може бути складно? Що ж, хоча основна ідея проста, Python пропонує кілька досить цікавих прийомів та методів, які можуть зробити ваш код більш ефективним та виразним. До кінця цієї статті ви множитимете все, від чисел до списків, як професіонал. Чи готові? Поїхали!

Основи множення

Перш ніж ми перейдемо до складніших речей, давайте почнемо з основ. У Python оператор множення – це зірочка (*). Цей оператор дозволяє множити числа, що, ймовірно, вам найбільше знайоме.

result = 5 * 3
print(result)

Під час запуску цього коду ви отримаєте 15 як висновок. Просто, чи не так? Ви так швидко все схоплюєте!

Тепер оператор множення Python не обмежується цілими числами. Ви також можете множити числа з плаваючою точкою:

result = 2.5 * 4.2
print(result)

Це дасть вам 10.5. Чудово! Ви вже множите як професіонал. Але можливості множення Python не обмежуються лише числами. Давайте розглянемо їх докладніше.

Методи множення в Python

Гнучкість Python дозволяє виконувати множення у різних контекстах, а не тільки з числами. Давайте докладніше розглянемо деякі цікаві способи множення Python.

1. Використання циклу For

Найпростіший метод — використовувати цикл for для ітерації за списком, помножуючи кожен елемент на поточну змінну твори.

numbers = [ 2, 3, 4]
result = 1
for number in numbers:
result *= number
print(result) # Output: 24

2. Використання функції reduce

Функція reduce з модуля functools може використовуватися для кумулятивного застосування функції (в даному випадку множення) до елементів списку зліва направо.

from functools import reduce
від Operator import mul

numbers = [2, 3, 4]
result = reduce(mul, numbers)
print(result) # Output: 24

3. Використання List Comprehension з функцією prod

У Python 3.8 та пізніших версіях модуль math надає функцію prod, яку можна використовувати безпосередньо у списку для отримання всіх елементів.

from math import prod

numbers = [2, 3, 4]
result = prod(numbers)
print(result) # Output: 24

4. Використання функції prod з NumPy

Якщо ви працюєте з числовими даними і вам потрібна оптимізація продуктивності, ви можете використовувати функцію prod з NumPy, яка добре оптимізована для таких операцій.

import numpy as np

numbers = [2, 3, 4]
result = np.prod(numbers)
print(result) # Output: 24

5. Використання рекурсивної функції

Рекурсивну функцію також можна використовувати для множення елементів списку, хоча для цієї задачі вона використовується не так часто через її складність.

def multiple_list(numbers) :
if len(numbers) == 0:
return 1
else:
return numbers[0] * multiple_list(numbers[1:])

numbers = [2, 3, 4]
result = multiple_list(numbers)
print(result) # Output: 24

6. Використання циклу While

Подібно до циклу for, цикл while можна використовувати для множення елементів списку, особливо якщо вам потрібен більший контроль над процесом ітерації.

numbers = [2, 3, 4]
result = 1
i = 0
while i < len(numbers):
result *= numbers[i]
i += 1
print(result) # Output: 24

7. Використання Map та лямбда-функції

Ви можете використовувати map з лямбда-функцією для множення елементів, хоча зазвичай це передбачає використання reduce після отримання кінцевого продукту .

від functools import reduce

numbers = [2, 3, 4]
result = reduce(lambda x, y: x * y, numbers)
print(result) # Output: 24

Умноження списків

Чи знаєте ви, що в Python можна множити списки? Ні, ми не говоримо про множення вмісту списків один на одного (ми повернемося до цього пізніше). Ми говоримо про множення самого списку!

Коли ви множите список на ціле число, Python повторює список стільки разів. Ось як це виглядає:

my_list = [1, 2, 3]
multiplied_list=my_list*3
print(multiplied_list)

Висновок буде таким:

[1, 2, 3, 1, 2, 3, 1, 2, 3]

Бачите, що тут сталося? Python повторив my_list тричі. Це може бути дуже зручно, коли вам потрібно швидко згенерувати список з елементами, що повторюються.

А що, якщо ви спробуєте помножити список на число з плаваючою точкою? Спробуйте. Ви виявите, що Python не дозволяє:

my_list = [1, 2, 3]
multiplied_list = my_list * 2.5

Це видасть TypeError. Python очікує ціле число при множенні списку, і це має сенс - як ви повторите щось 2.5 разів? Пам'ятайте про це, працюючи зі списками!

Умноження рядків

Рядки в Python також можна множити, і ця концепція схожа на множення списків. Коли ви множите рядок на ціле число, Python повторює рядок стільки разів.

my_string = "Hello "
multiplied_string=my_string*3
print(multiplied_string)

Висновок буде таким:

Hello Hello Hello 

Круто, правда? Ця функція часто використовується для форматування виводу або створення простих шаблонів. Уявіть, що ви бажаєте надрукувати рядок тире для заголовка:

header_line = "-" * 50
print(header_line)

Висновок буде таким:

--------------------- -----------------------------

Красиво та акуратно! Python дозволяє легко створювати такі шаблони, заощаджуючи ваш час та зусилля.

Умноження матриць

Добре, давайте зробимо крок вперед. А якщо ви маєте справу з більш складними структурами даних, такими як матриці? У Python множення матриць не так просто, як множення чисел або рядків. Але не хвилюйтеся - Python прикриє вас спеціальною бібліотекою під назвою NumPy.

Що таке NumPy?

NumPy - це потужна бібліотека для числових обчислень у Python. Він забезпечує підтримку масивів, матриць та багатьох математичних функцій. Якщо ви працюєте з великими наборами даних, чисельним моделюванням або науковими обчисленнями, NumPy — ваш інструмент.

Спочатку потрібно встановити NumPy, якщо ви цього ще не зробили:

pip install numpy

Тепер давайте помножимо кілька матриць!

Приклад множення матриць

Умноження матриць трохи відрізняється від поелементного множення. Ось як це можна зробити за допомогою NumPy:

import numpy as np

# Визначити дві матриці
matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])

# Помножити матриці
result = np.dot(matrix1, matrix2)
print(result)

Висновок буде:

[[19 22]
[43 50]]

Тут np.dot() використовується для виконання множення матриць. Результатом є нова матриця, де кожен елемент є сумою творів відповідних елементів із рядків першої матриці та стовпців другої матриці.

Умноження матриць може бути трохи складним, якщо ви новачок, але з практикою це стане вашою другою натурою. А з NumPy це ефективно та легко реалізувати.

Множення масивів

На додаток до матриць, NumPy також спрощує виконання поелементного множення масивів. Це означає, що ви можете множити відповідні елементи двох масивів разом. Погляньмо:

import numpy as np

# Визначення двох масивів
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])

# Поелементне множення
result = array1 * array2
print(result)

Висновок буде наступним:

[ 4 10 18]

Тут кожен елемент у < code>array1 множиться на відповідний елемент у array2. Це дуже корисно в задачах обробки даних, де вам потрібно виконувати операції з наборами даних елемент за елементом. масиви чи матриці не однакового розміру? Чи можу я все одно їх помножити? Відмінне питання!

Для поелементного множення масиви мають бути однакового розміру. Якщо це не так, Python видасть ValueError. Однак NumPy допускає широкомовну передачу, яка іноді дозволяє виконувати операції з масивами різних розмірів шляхом розтягування одного масиву для відповідності іншому. Це трохи більш просунуто, але безумовно те, що варто вивчити, коли ви освоїтеся з Python.

А що, якщо ви хочете помножити матрицю на скаляр (одне число)? Легко! NumPy дозволяє множити матрицю або масив на скаляр, і він помножить кожен елемент на це число.

scalar = 2
result = matrix1 * scalar
print(result)

Це виведе:

[[2 4]
[6 8]]

Кожен елемент у matrix1 був помножений на 2. Просто і потужно!

Резюме та висновок

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

Пам'ятайте, практика — це ключ. Чим більше ви експериментуєте з цими концепціями, тим природнішими вони стають. Так що дерзайте - спробуйте помножити кілька списків, створити шаблони з рядками або навіть поринути у множення матриць за допомогою NumPy. У вас все вийде!

Додаткові ресурси

Якщо ви хочете дізнатися більше про можливості Python, ось кілька ресурсів для ознайомлення:

Продовжуйте вивчати і не соромтеся ставити запитання або шукати більше посібників у міру вашого подальшого вивчення Python. Приємного програмування!

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ