首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python,如何在列表中乘所有匹配的整数,然后添加其余的整数

使用Python,如何在列表中乘所有匹配的整数,然后添加其余的整数
EN

Stack Overflow用户
提问于 2022-09-05 22:36:40
回答 2查看 81关注 0票数 -2

我正在重新创建一个名为“Python中的指节骨”的骰子游戏,作为一个有趣的个人项目。

对于游戏逻辑,我需要乘一个列表中的所有匹配值,然后添加其余的值。

示例1:

代码语言:javascript
复制
numbers = [3, 3, 2]

这个列表应该将3和3相乘,然后加2,总共11。

示例2:

代码语言:javascript
复制
numbers2 = [4, 4, 4]

这个列表应该乘以4乘4,总共64。

示例3:

代码语言:javascript
复制
numbers3 = [2, 4, 6]

在这份清单中不应增加任何内容。所有的数字都应该加起来总共12个。

有人能帮我弄清楚这件事的逻辑吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-05 22:44:05

我觉得这应该管用

我将建议使用从内置模块集合中修改的计数器。

默认情况下,计数器将只计算所有列表中的条目,因为它的工作原理类似于字典,因此可以很简单地乘以所有条目并将它们加起来。

在这里,您有更多信息:

https://docs.python.org/3/library/collections.html

https://realpython.com/python-counter/

代码语言:javascript
复制
from collections import Counter

class MyCounter(Counter):
    def __ini__(*arg, **kwargs):
        super().__init__(*arg, **kwargs)
        
    def sum_entries(self):
        total = 0
        for key, val in self.items():
            total += key**val
        return total
    
out = MyCounter([3, 3, 2])
output = out.sum_entries()

输出

代码语言:javascript
复制
out = MyCounter([3, 3, 2])
output = out.sum_entries()
print(output)
代码语言:javascript
复制
11
代码语言:javascript
复制
out = MyCounter([4, 4, 4])
output = out.sum_entries()
print(output)
代码语言:javascript
复制
64
代码语言:javascript
复制
out = MyCounter([2, 4, 6])
output = out.sum_entries()
print(output)
代码语言:javascript
复制
12

编辑

正如注释中所建议的那样,如果类看起来很复杂,就避免使用类。

代码语言:javascript
复制
from collections import Counter

out = Counter([3, 3, 2])
total = 0
for key, val in out.items():
    total += key**val
票数 3
EN

Stack Overflow用户

发布于 2022-09-05 23:07:11

内置的方法。使用dict.fromkeys将计数器初始化为零(并删除重复项)。然后用循环来确定结果的频率,并应用“指节骨”规则。

代码语言:javascript
复制
numbers = [3, 3, 2]

d = dict.fromkeys(numbers, 0)
for n in numbers:
    d[n] += 1

res = sum(k**frequency for k, frequency in d.items())
print(res)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73615201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档