Min和max函数返回不正确的值

2024-09-29 23:19:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python2.7来查找文本文件中的最高值和最低值。

文本文件的格式很简单,每行有一个整数值。 以下代码从文件中收集数字:

with open(data_file, 'r') as f:
    data_list = f.readlines()

然后,我尝试通过以下方法达到最大值和最小值:

max_value =  max(data_list)
min_value = min(data_list)
print('Max value: '+ str(max_value) + ' Min value: ' + str(min_value))

我从照片上得到的是: 最大值:8974 最小值:11239

最大值怎么可能小于最小值?我也试过打印整个列表,其中有比上面所述的值高的值,也有比上面所述的值低的值。在文本文件中,也有高于和低于上述值。

我觉得我对python的理解可能有一些根本性的错误,请帮助我找出我的误解。


Tags: 代码datavalue格式with数字openmin
1条回答
网友
1楼 · 发布于 2024-09-29 23:19:35

当您从文件中读取时,列表中将充满字符串。您需要将它们转换为int/float,否则max/min将不会返回max/min数值值。下面的代码将使用list comprehensiondata_list中的每个值转换为整数,然后返回最大值。

max_value = max([int(i) for i in data_list])

你可以在事实发生之前这样做,这样你就不必为min再次转换它:

with open(data_file, 'r') as f:
    data_list = [int(i) for i in f.readlines()]

max_value =  max(data_list)
min_value = min(data_list)

注意:如果有float,那么应该在列表理解中使用float,而不是int

顺便说一下,这对字符串不起作用的原因是max将比较字符串的序号值,从字符串的开头开始。在这种情况下,“8”大于“1”。

相关问题 更多 >

    热门问题