Умножить пары кортежей - PullRequest
1 голос
/ 26 июня 2019

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

Мне нужно повернуть

L="1 3 5 7"
N="4 -1 2 0"

на

[4, -3, 10, 0]

Пока яесть, но я не уверен, как определить функцию

l=L.split()
n=N.split()
l1=map(int,l)
n1=map(int,n)
z=zip(n1,l1)
print(list(z))
def transform(x):
    for i in x:
        for j in x:
            yield i*j
print (list(transform(z)))

Я был бы рад любой совет

1 Ответ

1 голос
/ 26 июня 2019

Из-за ожидаемого результата - это сумма , но не умножение :

L="1 3 5 7"
N="4 -1 2 0"

def sum_str_items(s1, s2):
    return list(map(sum, zip(map(int, s1.split()), map(int, s2.split()))))

print(sum_str_items(L, N))

Выход:

[5, 2, 7, 7]

A «умножение» версия может быть реализована с помощью функции itertools.starmap :

from itertools import starmap
from operator import mul

L = "1 3 5 7"
N = "4 -1 2 0"


def mul_str_items(s1, s2):
    return list(starmap(mul, zip(map(int, s1.split()), map(int, s2.split()))))

print(mul_str_items(L, N))

Выход:

[4, -3, 10, 0]
...