对集合和元组求和

问题描述 投票:0回答:1

在 Python 3.12 的文档中,它说 sumprod(p, q) 返回两个可迭代 p 和 q 的值的乘积之和。

我在 IDLE 中尝试了以下示例,其中包含一个集合和一个元组:

ptup = (1, 3, 5, 7)
qset = {2, 3, 5, 8}
math.sumprod(qset, ptup)
64

这是一个错误,因为 1*2 + 3*3 + 5 * 5 + 7*8 != 64。

我尝试了带有列表和元组的 sumprod() ,它们工作得很好。我试图查找 set 是否不是可迭代对象,但我得到的答案肯定是 set 是可迭代的。

那么这里有什么问题呢?我们可以将 sumprod 与集合和列表或集合和元组一起应用吗?

请帮我解释一下。

谢谢你。

python python-3.x function math
1个回答
1
投票

这是因为

set
在 Python 中没有顺序,因此即使您编写了
{2, 3, 5, 8}
,也可以按任何顺序 存储

所以在你的情况下,我最好的方法是将其存储为

{8, 2, 3, 5}
,然后你会得到
1 * 8 + 3 * 2 + 5 * 3 + 7 * 5 = 64

© www.soinside.com 2019 - 2024. All rights reserved.