我通过分割具有整数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
这是我的代码
答案 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
采用参数列表的元素并将它们添加到“源”列表的末尾,这就是您的意思。
(你可以做很多其他事情来修复这段代码,但这可能是另一个问题)