Как умножить два разных массива целых чисел в Python? - PullRequest
2 голосов
/ 07 июня 2009

Я взял данные в двух разных списках, разделив строку, содержащую целые числа 1 2

например 1 2

3 4

так что теперь я разделил его и сохранил в списках, и хочу умножить их как 1 * 3 + 2 * 4, но когда я пытаюсь это сделать, это дает мне возможность умножать только целые числа, а не списки! ! помощь здесь

не может умножить последовательность на не-int типа 'list' .. это ошибка, которую я получаю - когда я делаю

c=sum(i*j for i, j in zip(a,b))

...

t=raw_input()
d =[]
for j in range(0,int(t)):
    c=0
    n=raw_input()
    s = raw_input()
    s1=raw_input()
    a=[]
    b=[]
    a.append( [int(i) for i in s.split(' ')])
    b.append([int(i) for i in s.split(' ')])
    d.append(sum(i*j for i, j in zip(a,b)))

for i in d:
    print i

это мой код

Ответы [ 4 ]

7 голосов
/ 07 июня 2009

Вам нужно:

>>> a = [1,2]
>>> b = [3,4]
>>> sum(i*j for i, j in zip(a,b))
11
2 голосов
/ 07 июня 2009

Вы можете сделать это питонским способом, используя sum, map и лямбда-выражение.

>>> a = [1,2]
>>> b = [3,4]
>>> prod = lambda a, b: a*b
>>> sum(map(prod, a, b))
11

бит lambda a, b: a*b также имеет специальное имя в python, operator.mul

>>> import operator
>>> sum(map(operator.mul, a, b))
11
1 голос
/ 07 июня 2009

Это то, что вы хотите?

t=raw_input()
d =[]
for j in range(0,int(t)):
    #c=0
    #n=raw_input()
    s = raw_input()
    s1 =raw_input()
    a = [int(i) for i in s.split(' ')]
    b = [int(i) for i in s1.split(' ')] # <--s1 not s
    d.append(sum(i*j for i, j in zip(a,b)))

for i in d:
    print i
0 голосов
/ 07 июня 2009

Это не имеет ничего общего с умножением целых чисел, но вы, вероятно, должны использовать метод extend:

    a.extend([int(i) for i in s.split(' ')])
    b.extend([int(i) for i in s.split(' ')])

append просто привязывает свой аргумент к списку в качестве последнего элемента. Поскольку вы передаете список на append, вы получаете список списков. extend, однако, берет элементы списка аргументов и добавляет их в конец списка «исходников», что, как кажется, вы и собираетесь делать.

(Есть множество других вещей, которые вы могли бы сделать, чтобы исправить этот код, но, вероятно, это вопрос другого вопроса)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...