Умножение всех элементов в двух списках - PullRequest
0 голосов
/ 08 сентября 2018

Я хочу умножить каждый номер списка1 на каждый номер списка2.
Например: [1,2]*[1,2,3] должно возвращать что-то вроде этого: [1,2,3,2,4,6] Я просто хочу знать, есть ли какая-либо специальная функция для вычисления этого, так как это займет много времени, чтобы вычислить это с помощью цикла for.

Ответы [ 3 ]

0 голосов
/ 08 сентября 2018

Вы также можете сделать это, используя точечные продукты, как указано в numpy (Я включаю это в качестве ответа, потому что вы сказали, что ищете любую специальную функцию и хотите оптимизировать скорость, хотя Я согласен, что это не самый читаемый или простой метод):

import numpy as np

lst1, lst2 = [1, 2], [1, 2, 3]

np.dot(np.array([lst1]).T, np.array([lst2])).flatten().tolist()
#[1, 2, 3, 2, 4, 6]
0 голосов
/ 08 сентября 2018

попробуйте это:

import itertools    

a = [1, 2]
b = [1, 2, 3]
result = []
for n in a:
    m = map(lambda x,y: x*y, b, itertools.repeat(n))
    result.extend(m)
0 голосов
/ 08 сентября 2018

Простое вложенное понимание будет работать:

lst1, lst2 = [1, 2], [1, 2, 3]

[x * y for x in lst1 for y in lst2]
# [1, 2, 3, 2, 4, 6]

Чтобы получить все пары (декартово произведение) из двух списков, вы также можете использовать itertools.product:

from itertools import product
[x * y for x, y in product(lst1, lst2)]
# [1, 2, 3, 2, 4, 6]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...