Как умножать списки в 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].

Если вы попытаетесь умножить два списка Python вместе с помощью оператора '*', вы получите сообщение об ошибке:

TypeError: невозможно умножить последовательность на не-целое типа «список»

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

Поэлементное умножение объединяет соответствующие элементы из двух списков и умножает их вместе, формируя новый список.

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

Как использовать цикл for для нескольких элементов списка в Python

Как умножать списки в Python: 7 быстрых способов

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

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

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)].

Как использовать карту и лямбда-функцию в Python

Как умножать списки в Python: 7 быстрых способов

Функция карты в Python — это удобный способ применить функцию к каждому элементу в итерируемом объекте, таком как список.

Лямбда-функция в Python — это небольшая анонимная функция. Это означает, что это функция без имени.

Чтобы умножить два списка поэлементно, вы можете комбинировать функции карты и лямбда:

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

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

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

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

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

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

Удачного питона!

Leave a Comment

Расчет недельных продаж с помощью DAX в LuckyTemplates

Расчет недельных продаж с помощью DAX в LuckyTemplates

В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Как сохранить и загрузить файл RDS в R

Как сохранить и загрузить файл RDS в R

Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

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

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

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

Введение в фильтрацию контекста в LuckyTemplates

Введение в фильтрацию контекста в LuckyTemplates

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

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.

Идеи материализации кэшей данных в DAX Studio

Идеи материализации кэшей данных в DAX Studio

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

Бизнес-отчетность с использованием LuckyTemplates

Бизнес-отчетность с использованием LuckyTemplates

Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.