我使用python 2.7在文本文件中查找最高和最低值。
文本文件的格式简单,每行都有一个Integer值。 以下代码从文件中收集数字:
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的理解可能存在根本性的错误,请帮助我找出我的误解。
答案 0 :(得分:10)
当您从文件中读取时,您的列表将充满字符串。您需要将这些转换为整数/浮点数,否则max/min
将不会返回max/min
数字值。下面的代码会使用list comprehension将data_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
而不是int
。
顺便说一下,这对字符串不起作用的原因是max
将比较字符串的序数值,从字符串的开头开始。在这种情况下,'8'大于'1'。