python - 查找列表中的对数
问题描述
我有数字列表:
[5, 4, 3, 4, 2, 1, 3, 5, 3, 5, 3, 5,]
一对数字是相同的2个数字。例如,5 出现 4 次,所以我们有 2 对 5。在上面的列表中,我可以说我有 5 双。我希望输出计算列表中有多少对数字。
我试过这个,但卡住了。
list = [5,4,3,4,2,1,3,5]
print(list)
temp = 0
new_list = []
for index,x in enumerate(list):
elm_count = list.count(list[index])
if new_list:
for ind, y in enumerate(new_list):
if list[index] == new_list[ind]:
continue
if not elm_count % 2:
occ_count = elm_count/2
temp += occ_count
new_list.append(list[index])
continue
解决方案
实现这一点的更简单方法是使用collections.Counter()
with sum()
as:
>>> my_list = [5, 4, 3, 4, 2, 1, 3, 5,3, 5, 3, 5,]
>>> sum(num//2 for num in Counter(my_list).values())
5
这里Counter()
将生成一个dict
以数字为键并在列表中出现的数字作为其值的计数。然后我迭代它的值并使用生成器表达式计算每个数字的对数,并使用 对所有对数进行求和sum()
。
您可以参考以下文档了解更多详情:
推荐阅读
- reactjs - 有没有办法使用 scrollTo 来隐藏带有 react-router 的 url 栏?
- android - 无法为 AMD 安装 Android 模拟器
- python - pydy.codegen.ode_function_generators - 没有名为 pydy 的模块
- c# - C#向图片添加字节以增加文件大小
- sql - 蜂巢查询将 substr 与 LIKE 与以精确子字符串结尾的字符串进行比较
- lua - 如何列出当前运行的 NodeMCU 固件中内置的所有“romtable”模块?
- php - 在 Wordpress 中加载页面之前检查 cookie
- firebase - 使用 firebase/auth 在我的 Ionic 5 移动应用程序中无法再登录 Facebook
- validation - 是的 vs Joi 用于前端验证
- android - 签署 Android apk 时从管道访问 Azure DevOps 上的安全文件