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

时间:2009-06-07 06:20:46

标签: python

我通过分割具有整数1 2

的行来获取两个不同列表中的输入

例如 1 2

3 4

所以现在我把它拆分并保存在列表中,并希望将它们乘以1 * 3 + 2 * 4,但是当我尝试这样做时,它给了我它只能乘以整数而不是列表! ! 帮助

不能将序列乘以'list'类型的非int ..这就是我得到的错误 - 当我做的时候

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 个答案:

答案 0 :(得分:7)

你需要:

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

答案 1 :(得分:2)

您可以使用sum,map和lambda表达式以pythonic方式执行此操作。

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

答案 2 :(得分: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 :(得分:0)

它与乘法整数无关,但您可能应该使用extend方法:

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

append只是把它的论点作为最后一个元素加入到列表中。由于您将列表传递给append,因此您最终会得到一个列表列表。但是,extend采用参数列表的元素并将它们添加到“源”列表的末尾,这就是您的意思。

(你可以做很多其他事情来修复这段代码,但这可能是另一个问题)