Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python max()在列表中找不到实际的最大值_Python_List_Max_Min - Fatal编程技术网

Python max()在列表中找不到实际的最大值

Python max()在列表中找不到实际的最大值,python,list,max,min,Python,List,Max,Min,我有两个列表,我正在尝试拆分,以便计算最小值和最大值。原始列表如下所示: vlim: [-6.44194488 -4.12189618] vlim: [-0.35109226 0.90269746] vlim: [-6.48470812 -4.06394711] vlim: [-0.35046298 0.89800871] vlim: [-6.50338849 -3.92795199] 下面您可以看到我的脚本: '''

我有两个列表,我正在尝试拆分,以便计算最小值和最大值。原始列表如下所示:

vlim: [-6.44194488 -4.12189618]
vlim: [-0.35109226  0.90269746]
vlim: [-6.48470812 -4.06394711]
vlim: [-0.35046298  0.89800871]
vlim: [-6.50338849 -3.92795199]
下面您可以看到我的脚本:

'''                                                                                                                                                    
Finding max and min vlim values                                                                                                                        

stars is lists[0] and gas is lists[1]                                                                                                                  
'''
from sys import argv

script, file = argv

with open(file) as f:
    lists = ([], [])
    for i, line in enumerate(f):
        lists[i%2].append(line.strip())

## stars ##                                                                                                                                            

minlist = []
maxlist= []

for i in range(0,len(lists[0])):
    min_tmp = lists[0][i][7:18]
    max_tmp = lists[0][i][19:30]
    minlist.append(min_tmp)
    maxlist.append(max_tmp)

## gas ##                                                                                                                                              

minlist2 = []
maxlist2 = []

for i in range(0,len(lists[1])):
    min_tmp2 = lists[1][i][7:18]
    max_tmp2 = lists[1][i][19:30]
    minlist2.append(min_tmp2)
    maxlist2.append(max_tmp2)


print 'min star:  ', max(minlist) #max bc negative values                                                                                              
print 'max star:  ', min(maxlist)
print 'min gas:   ', max(minlist2)
print 'max gas:   ', max(maxlist2)


print''
print minlist
print''
print minlist2
print ''
print maxlist
我想去掉“vlim”和括号,所以我做了两个新的列表;“minlist”获取第一个数字,“maxlist”获取第二个数字。但是,当我在gas最大值列表上运行max()时,它不会选择实际的最大值:

min star:   -7.48815421
max star:   -3.84855181
min gas:    -0.97899559
max gas:    0.9262432]
但您可以在下面的列表中看到,有几个数字比max()发现的要大,请参见第2行:

[' 0.90269746', ' 0.89800871', ' 0.91088956', ' 0.92375575', ' 0.91859109', ' 0.91030079', ' 0.91962641', '0.9262432]', ' 0.93031583', ' 0.96124881', \
' 0.97476199', ' 0.96566733', ' 0.96988751', ' 0.98140795', ' 0.96833185', ' 0.96395218', ' 0.9342977 ', ' 0.93163674', ' 0.89933621', ' 0.91770517', \
' 0.92165692', ' 0.90245033', ' 0.89833043', ' 0.91639502', ' 0.88873233', ' 0.87241003', ' 0.78407889', ' 0.69231273', ' 0.63886276', ' 0.60207066', \
' 0.58330105', ' 0.56990499', ' 0.55740021', ' 0.53945954', ' 0.51366063', ' 0.51928393', ' 0.46654584', ' 0.43496984', ' 0.39934928', ' 0.36126022', \
' 0.32730902', ' 0.30790094', ' 0.28456324', ' 0.25893116', ' 0.24498652', ' 0.23020501', ' 0.20266526', ' 0.18111511', ' 0.16598142', ' 0.18298263', \
' 0.15324247', ' 0.14616999', ' 0.11671082', ' 0.08299617', ' 0.04595069', ' 0.00824732', '-0.03321626', '-0.06159366', '-0.09449168', '-0.11242293', \
'-0.09726435', '-0.06395773', '-0.04232095', '-0.03196949', '-0.03847378', '-0.05006481', '-0.05253942', '-0.08344223', '-0.10788819', '-0.12003492', \
'-0.14036405', '-0.16807319', '-0.18165499', '-0.17822416', '0.1829591]', '-0.18755693', '-0.20039758', '-0.20103783']
你知道我该怎么解决这个问题吗?肯定有一些奇怪的事情发生了,因为我还必须在“minlist2”中使用max()(在“maxlist”中使用min),才能让它给出列表中最负的数字(或最小的负数)。这是否与正负数字同时存在的事实有关

我对python真的很陌生,所以我可能只是在脚本中犯了一些错误而没有意识到


对不起,这篇文章。谢谢

您正在做的事情如下所示:

a = ['1','3','10','5']
print sorted(a)
输出

['1', '10', '3', '5']
['1', '10', '3', '5']
[1, 3, 5, 10]
5
10
因此,第一步是转换为float/int

a = ['1','3','10','5']
print sorted(a)
print sorted(map(int,a))
print max(a)
print max(map(int,a))
输出

['1', '10', '3', '5']
['1', '10', '3', '5']
[1, 3, 5, 10]
5
10

看起来您在比较字符串而不是实际数字。在将这些字符串传递到
min
max
函数rect之前,请尝试将它们转换为浮点数,但这并不能回答问题..谢谢。实际上我已经尝试过了(刚才又尝试过了),但是得到了'ValueError:invalid literal for int(),以10为基数:'-6.44194488'有什么想法吗?@Julia在你的情况下,你需要将int改为float