繁体   English   中英

Python:我应该使用什么函数? min() 和 max() 似乎不起作用?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM