2016-06-24 1 views
-2

최소 및 최대 값을 계산할 수 있도록 분할하려고하는 두 개의 목록이 있습니다. 원래의 목록은 다음과 같이 보입니다 :max() 목록에서 실제 최대 값을 찾지 못함

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"는 두 번째 숫자를 가져옵니다. 그러나, 나는 최대 값 내 가스 목록에 최대()를 실행하면 실제 최대 수 골라야하지 않습니다

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 (그리고 "maxlist"의 min)에 max()를 써야만 목록에서 가장 부정적인 수 (또는 가장 작은 음수)를 얻을 수 있기 때문입니다. 양수와 음수가 있다는 사실과 관련이 있습니까? 난 그냥 그것을 실현 내 스크립트에 몇 가지 실수를하지 할 수 있도록

나는 에세이에 대한

죄송합니다 ... 파이썬 정말 새로운 해요. 감사!

+5

은 실제 숫자가 아닌 문자열을 비교하는 것처럼 보입니다. 'min'과'max' 함수에 전달하기 전에 해당 문자열을 float으로 변환 해보십시오. – Hamms

답변

-1

당신이하고있는 것은 다음과 같다 :

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

출력

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

그러므로 첫 번째 단계는 플로트로 변환되어/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, 3, 5, 10] 
5 
10 
+0

맞지만이 질문에는 대답하지 않습니다 .. – SuperSaiyan

+0

고마워요. 나는 실제로 이것을 시도했지만 지금은 다시 시도한다. 'ValueError : 밑이 10 인 int()에 대한 리터럴이 잘못되었습니다.'-6.44194488 ' 아이디어가 있습니까? – Julia

+0

@ Julia 귀하의 경우, 당신은 부동으로 변경해야합니다 – galaxyan