如何在Python中乘两个不同的整数数组?

2 投票
4 回答
7948 浏览
提问于 2025-04-15 12:05

我从一行数字中分割出了两个不同的列表,比如说这行数字是 1 2

例如:

1 2

3 4

现在我把这些数字分开,放到了两个列表里,我想像这样计算:1*3 + 2*4,但当我尝试这样做时,出现了一个错误,提示我只能对整数进行乘法,而不能对列表进行乘法!!

我遇到的错误是:不能用非整数类型的 '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 个回答

1

这就是你想要的吗?

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
3

你可以用一种很“python风”的方式来实现这个,使用到的有sum、map和一个叫lambda的表达式。

>>> 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
8

你需要:

>>> a = [1,2]
>>> b = [3,4]
>>> sum(i*j for i, j in zip(a,b))
11

撰写回答