如何在Python中乘两个不同的整数数组?
我从一行数字中分割出了两个不同的列表,比如说这行数字是 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