Как найти произведение элементов в нескольких кортежах в списке - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть список ниже:

list = [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]

Как мне вернуть список, содержащий произведения элементов в кортежах, ie.:

[1, 2, 3, 2, 4, 6, 3, 6, 9]

где

1 * 1 = 1 - это 1-й элемент в новом списке

1 * 2 = 2 - это 2-й элемент в новом списке

1 * 3 = 3 - это 3-й элемент в новом списке

2 * 1 = 2 - это 4-й элемент в новом списке

2 * 2 = 4 - 5-й элемент в новом списке

et c.

Способ сделать это в понимании списка был бы великолепен. Спасибо!

Ответы [ 2 ]

2 голосов
/ 22 февраля 2020

Вы можете использовать понимание списка:

from functools import reduce
from operator import mul

[reduce(mul, t, 1) for t in my_list]
1 голос
/ 22 февраля 2020

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

lst = [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]

products = [a*b for a,b in lst]

# [1, 2, 3, 2, 4, 6, 3, 6, 9]
...