两个表的乘积和

  • 本文关键字:两个 python
  • 更新时间 :
  • 英文 :


我正在尝试创建一个可以在Python中计算乘积和的函数。

我有两个列表:

x1 = [3, 1, 3, 1, 3, 13]
x2 = [2, 3, 31, 3, 13, 3]

我的想法是取两者的平均值:

m1 = mean(x1)
m2 = mean(x2)

然后计算:

(x1[0] - m1) * (x2[0] - m2)+(x1[1] - m1) * (x2[1] - m2)+(x1[2] - m1)*(x2[2] - m2)...直到两个列表的末尾。

关键是使用zip成对地组合列表:

sumprod = sum(a*b for a,b in zip(x1,x2))

不知道你在用"意义"做什么。在那里。

如果你想做你的标题所说的,但你的解释略有不同,蒂姆罗伯茨的解决方案是有效的。也许他的答案和我的答案结合起来会让你走上正确的道路。我编写了一个函数,然后将您提供的两个列表相乘:

def avgdiff(mylist):
listavg=sum(mylist)/len(mylist)
outval=1
for x in mylist:
outval=outval*abs(x-listavg)
return outval

x1 = [3,1,3,1,3,13]
x2 = [2,3,31,3,13,3]
print(avgdiff(x1)*avgdiff(x2))

可以使用单个for循环

import statistics
x1 = [3,1,3,1,3,13]
x2 = [2,3,31,3,13,3]
m1 = statistics.mean(x1)
m2 = statistics.mean(x2)
n = len(x1) # assuming x1 and x2 will always be the same length
res = 0 # this will store the final ans
# here i will be 0, 1, 2, ... n
for i in range(n):
res += ((x1[i] - m1) * (x2[i] - m2))
print(res)

在一个循环中有多种可能。这里我试图使代码干净

x1 = [3, 1, 3, 1, 3, 13]
x2 = [2, 3, 31, 3, 13, 3]
m1 = sum(x1) / len(x1)  # the mean of x1
m2 = sum(x2) / len(x2)  # the mean of x2
ans = 0
for num1, num2 in zip(x1, x2):
ans += ((num1 - m1) * (num2 - m2))

ans是答案。

最新更新