[英]Python: What function should I use? min() and max() doesn't seem to work?
我有一个输入不同列表的程序,它似乎适用于某些列表,但不适用于其他列表。 如果您能向我解释这一点,将不胜感激,谢谢。
此输入不起作用:
input_list = ['-9', '-9', '-9', '-8.5', '-8.5', '-8.5', '-8.5', '-8.5', '-8.5', '-8.5', '-8.5', '-8.5', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8']
print(min(input_list))
输出(考虑到列表中有“-9”值,这显然不起作用):
-8
现在,如果我将input_list[0]
更改为'-10'
这出于某种原因有效:
input_list = ['-10', '-9', '-9', '-8.5', '-8.5', '-8.5', '-8.5', '-8.5', '-8.5', '-8.5', '-8.5', '-8.5', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8', '-8']
print(max(input_list))
输出(工作正常):
-10
如果我使用print(max(input_list))
我反而得到 Output: -9
在上面的两个例子中
min() 和 max() 适用于正数列表,但不适用于负数。
考虑到根据不同文本文件(日志)的输入变化,我需要找到解决方法。
这只是显示我如何获取文件等,让您了解一些信息:
from tkinter import filedialog
def openfile(filename):
with open(filename, 'r') as inputfile:
columns = inputfile.readlines()
column1 = [column.split()[7] for column in columns]
return column1
filename = filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("txt files","*.txt"),("all files","*.*")))
columnlist = openfile(filename)
c1 = columnlist[1:]
print(min(c1))
对于字符串,内置函数min
将返回最小的字母字符,例如-9
和-8
将计算第一个字符,即'-'
和'-'
因为它们相等将计算第二个字符,即'8'
和'9'
,字符'8'
是最小值,所以函数将返回-8
并且非常有意义;
如果您想找到最小浮点数,那么您必须为您的函数提供浮点数,您可以使用key
参数来转换以在比较期间浮动您的列表元素:
min(input_list, key=float)
输出:
'-9'
相同的逻辑适用于max
内置函数
使用以下方法将元素转换为浮动:
input_list = list(map(float, input_list))
print(min(input_list))
你的问题是你在字符串列表上运行max()
和min()
......我不确定Python如何处理字符串列表上的这些函数(我认为这取决于你正在运行的版本)无论如何,应该避免这种情况。 我的解决方案是运行
# Convert strings to floats
list = [float(i) for i in list]
min(list)
max(list)
这应该有效
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.