Як помножити списки в Python: 7 швидких способів

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

Щоб помножити списки в Python, ви можете використовувати функції циклів for, розуміння списків, zip і map, або вбудований модуль functools. Ви також можете використовувати функції із зовнішньої бібліотеки Python, наприклад NumPy.

Ця стаття покаже вам багато різних способів множення списків, кожен з яких містить приклад коду та пояснення результатів.

Давайте розпочнемо!

Зміст

2 типи множення числового списку в Python

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

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

Ця стаття фокусується на двох типах арифметичного множення елементів у списку:

  1. Множення на значення

  2. Поелементне множення

Давайте коротко розглянемо ці два поняття.

1. Множення на значення

Якщо у вас є список цілих чисел, ви можете помножити кожен елемент на певне значення. Наприклад, у вас є список [1, 2, 3] і ви хочете помножити кожен елемент на значення 3.

Ви можете спробувати (неправильно) використати оператор множення, як у цьому фрагменті коду:

list1 = [1, 2, 3]
result = list1 * 3

Ви можете бути здивовані тим, що результат [1, 2, 3, 1, 2, 3, 1, 2, 3]. Це відомо як реплікація списку .

2. Поелементне множення списків

Припустимо, у вас є два списки: [1, 2, 3] і [4, 5, 6]

Ви хочете помножити елементи з однаковим індексом у списку, щоб у результаті отримати [4, 10, 18].

Якщо ви спробуєте помножити два разом за допомогою оператора «*», ви отримаєте повідомлення про помилку:

TypeError: неможливо помножити послідовність на не int типу 'list'

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

Поелементне множення об’єднує відповідні елементи з двох списків і множить їх разом, утворюючи новий список.

Тепер, коли ви розумієте ці дві концепції. давайте попрацюємо з низкою технік, щоб досягти правильних результатів.

Як використовувати цикл For для створення кількох елементів списку в Python

Як помножити списки в Python: 7 швидких способів

Припустимо, ви хочете помножити елементи на значення. Для цього підходу ви можете перебирати елементи за допомогою a та множити кожен на друге значення.

Ось приклад з одним списком. Змінна результату містить вихідний список.

list1 = [1, 2, 3, 4]
factor = 3
result = []

for element in list1:
    result.append(element * factor)

У цьому випадку список результатів матиме вигляд [3, 6, 9, 12].

Як використовувати списки для множення

Розуміння списку забезпечує стислий спосіб виконання числового типу множення списку. Ви отримуєте той самий результат, що й цикл for , але з більш компактним синтаксисом.

Ось попередній приклад із використанням розуміння списку:

list1 = [1, 2, 3, 4]
factor = 3
result = [element * factor for element in list1]

Результатом цього коду є той самий результат, що й раніше: [3, 6, 9, 12].

Як використовувати функцію Zip для поелементного множення

Як помножити списки в Python: 7 швидких способів

Якщо у вас є два списки цілих чисел, ви можете помножити списки поелементно. Це означає, що ви множите перший елемент у першому списку на перший елемент у другому списку і так далі з елементами в тій же позиції.

Функція zip() може досягти цього, якщо поєднати її з розумінням списку.

Функція поєднує елементи двох списків введення, дозволяючи вам паралельно переглядати їх. Ось приклад використання списків однакового розміру:

list1 = [1, 2, 3, 4]
list2 = [2, 3, 4, 5]
result = [a * b for a, b in zip(list1, list2)]

У цьому випадку змінна результату буде містити результуючий список: [4, 10, 18].

Робота з кортежами та конструкторами

Іноді вам може знадобитися працювати зі списками, які містять кортежі, а не прості цілі числа.

Щоб помножити два списки кортежів , ви можете використати комбінацію:

  • функція zip().

  • конструктори кортежів

  • розуміння списку

Ось приклад:

list1 = [(1, 2), (3, 4)]
list2 = [(5, 6), (7, 8)]

result = [tuple(a * b for a, b in zip(t1, t2)) for t1, t2 in zip(list1, list2)]

Ось результат: [(5, 12), (21, 32)].

Як використовувати функцію Map і Lambda в Python

Як помножити списки в Python: 7 швидких способів

Функція map у Python — це зручний спосіб застосувати функцію до кожного елемента в ітерації, як-от список.

Лямбда-функція в Python — це невелика анонімна функція. Це означає, що це функція без імені.

Щоб помножити два списки поелементно, ви можете поєднати функції map і lambda:

list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = list(map(lambda x, y: x * y, list1, list2))

Змінна результату буде містити перемножені списки: [4, 10, 18].

Як використовувати модуль оператора в Python

Операторський модуль надає безліч корисних функцій для роботи з різними структурами та типами даних.

Функцію operator.mul() можна використовувати для множення списків цілих чисел, якщо ви поєднуєте її з функцією map.

import operator

list1 = [1, 2, 3]
list2 = [4, 5, 6]

result = list(map(operator.mul, list1, list2))

У цьому прикладі ви імпортуєте модуль оператора та використовуєте функцію mul() разом із вбудованою функцією Python map() для множення кожного елемента з двох списків.

Змінна результату буде містити перемножені списки: [4, 10, 18].

Бібліотека NumPy: функції масиву та множення

Як помножити списки в Python: 7 швидких способів

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

Щоб використовувати NumPy, ви можете встановити його за допомогою pip:

pip install numpy

Щоб виконати поелементне множення у двох списках за допомогою NumPy, виконайте такі загальні дії:

  1. Перетворіть кожен список на масив NumPy за допомогою numpy.array() .

  2. Виконайте множення за допомогою функції множення NumPy.

  3. За бажанням конвертуйте результат назад у список Python за допомогою методу tolist().

Ось приклад коду:

import numpy as np

list1 = [1, 2, 3]
list2 = [4, 5, 6]
arr1 = np.array(list1)
arr2 = np.array(list2)

res_arr = np.multiply(arr1, arr2)
result = res_arr.tolist()

Це поверне той самий результат, що й у попередніх прикладах: [4, 10, 18].

Як поєднати Functools і NumPy у Python

Бібліотека functools містить функцію зменшення, яка застосовує певну функцію сукупно до елементів у списку, скорочуючи список до одного значення.

Щоб помножити два списки за допомогою функції reduce() , ви можете поєднати її з функцією множення з бібліотеки NumPy.

Ось приклад:

from functools import reduce
import numpy as np

list1 = [1, 2, 3]
list2 = [4, 5, 6]

result = reduce(np.multiply, [list1, list2])

Цей код імпортує необхідні бібліотеки та використовує функцію reduce() разом із numpy.multiply() для виконання поелементного множення двох списків.

Робота зі списками та іншими структурами даних у Python

Більшість аспектів аналізу даних вимагають роботи з іншими структурами даних. Наприклад, ви використаєте свої знання під час обробки відсутніх даних за допомогою інтерполяції.

Перегляньте це відео, щоб дізнатися про деякі передові методи:

Заключні думки

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

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

Хоча ця стаття присвячена множенню, поняття, які ви вивчили, також поширюються на інші операції. Поелементне додавання, віднімання та ділення також можна виконати приблизно таким же чином.

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

Щасливого Pythoning!


Труба в R: підключення функцій за допомогою Dplyr

Труба в R: підключення функцій за допомогою Dplyr

У цьому підручнику ви дізнаєтесь, як об’єднати функції разом за допомогою оператора каналу dplyr мовою програмування R.

RANKX Deep Dive: функція LuckyTemplates DAX

RANKX Deep Dive: функція LuckyTemplates DAX

RANKX від LuckyTemplates дозволяє повернути рейтинг певного числа в кожному рядку таблиці, який є частиною списку чисел.

Вилучення тем і зображень LuckyTemplates із PBIX

Вилучення тем і зображень LuckyTemplates із PBIX

Дізнайтеся, як розібрати файл PBIX, щоб витягти теми та зображення LuckyTemplates із фону та використовувати їх для створення звіту!

Шпаргалка формул Excel: Посібник середнього рівня

Шпаргалка формул Excel: Посібник середнього рівня

Шпаргалка формул Excel: Посібник середнього рівня

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Python у LuckyTemplates: як встановити та налаштувати

Python у LuckyTemplates: як встановити та налаштувати

Дізнайтеся, як інсталювати мову програмування Python у LuckyTemplates і як використовувати її інструменти для написання кодів і відображення візуальних елементів.

Розрахунок динамічної норми прибутку – легкий аналіз LuckyTemplates за допомогою DAX

Розрахунок динамічної норми прибутку – легкий аналіз LuckyTemplates за допомогою DAX

Дізнайтеся, як обчислювати динамічну маржу прибутку за допомогою LuckyTemplates і як ви можете отримати більше інформації, глибше досліджуючи результати.

Сортування стовпців таблиці дат у LuckyTemplates

Сортування стовпців таблиці дат у LuckyTemplates

Дізнайтеся, як правильно сортувати поля зі стовпців розширеної таблиці дат. Це хороша стратегія для складних полів.

Знайдіть свої найкращі продукти для кожного регіону в LuckyTemplates за допомогою DAX

Знайдіть свої найкращі продукти для кожного регіону в LuckyTemplates за допомогою DAX

У цій статті я поясню, як знайти найпопулярніші продукти для регіону за допомогою обчислень DAX у LuckyTemplates, включаючи функції TOPN і CALCULATE.

Вимір сміття: що це таке і чому це щось інше, але не сміття

Вимір сміття: що це таке і чому це щось інше, але не сміття

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