我有一个程序可以输入不同的列表,它似乎可以很好地处理某些列表,但不能处理其他列表。如果你能向我解释一下,我将不胜感激,谢谢。
此输入无效:
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))
,我会在上面的两个例子中都得到输出:-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'
,并且字符CCD_ 12是最小的,因此函数将返回CCD_;
如果你想找到最小的浮点值,那么你必须给你的函数提供浮点值,你可以在比较过程中使用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)
这应该能起作用