python - 为什么模式总是1?

标签 python algorithm python-2.7 statistics

我正在尝试的一个有趣的概念是计算众数(每一行出现次数最多的数字)。当有很多模式时,我也想只打印出最低编号的模式值。我发现了一个关于计算模式并尝试应用大量答案的 SO 问题,但我应用的所有答案都给我一个值(我会告诉你)。

如您所见,我尝试了几种不同的方法逐行计算众数。

关于为什么模式总是一个的任何建议?谢谢。

更新: 使用如下用户建议的手动输入代码,输出如下:

item 1
item 2
item 3
item 2
item 3
item 2
maxitem 1
maxitem 2
Mode of list: 2
None
item 1
item 2
item 3
item 2
item 3
item 2
maxitem 1
maxitem 2
Mode of list: 2
None
item 1
item 2
item 3
item 2
item 3
item 2
maxitem 1
maxitem 2
Mode of list: 2
None
item 1
item 2
item 3
item 2
item 3
item 2
maxitem 1
maxitem 2
Mode of list: 2
None
item 1
item 2
item 3
item 2
item 3
item 2
maxitem 1
maxitem 2
Mode of list: 2
None
item 1
item 2
item 3
item 2
item 3
item 2
maxitem 1
maxitem 2
Mode of list: 2
None
item 1
item 2
item 3
item 2
item 3
item 2
maxitem 1
maxitem 2
Mode of list: 2
None

由于list的mode其实是2,相信mode函数是可以正常工作的。我更新了原始 names_list 的代码和输出,因为我意识到代码和输出不匹配(对此感到抱歉)。 所以我的理解是我设置 names_list 的方式计算模式是不正确的。我真的不明白这是怎么回事,如果有任何建议,我将不胜感激。

更新 2:

我听取了下面一位用户的建议,将 names_list = line.split(' ') 添加到我的代码中,以便正确解析整数。该建议为我提供了正确的值,但我想在存在多种模式时打印出最小的整数,并且在只有一种模式时仍希望打印出该模式。

最佳答案

我没有看到 names_list 的设置位置,所以我认为您遗漏了一些代码。无论如何,根据您的输出,您不会将文件的行拆分为单独的数字。

也就是说,您的列表是 [ "a string"] 而不是 [ 1,2,3,4,5,6,5,6 ] 一堆数字。

模式计算本身看起来不错。尝试编写一个测试用例,如下所示:

print_mode([1,2,3,2,3,2])

手动输入列表有助于将解析错误与逻辑错误分开。

关于python - 为什么模式总是1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34978426/

相关文章:

python - 如何使用python计算字符串中某个单词的所有出现次数

python - Pandas 基于更高分辨率的数据重新采样

algorithm - 从原始视频中获取运动向量

python - 使用 BeautifulSoup 删除具有特定类的 div

在一定天数内寻找穿越城市的最佳行程的算法

algorithm - 我应该什么时候使用 kd-tree?

Python 导入枚举错误

python - 使用 pexpect 时关闭 ssh 连接的正确方法?

python - 模糊搜索 Pandas 中的列

Python检查大量请求