2014-02-12 2 views
1

Я пытаюсь найти Max и Min в наборе чисел из CSV-файла. Мой код продолжает возвращать неправильный номер для функции Max для некоторых строк. Вот мой код:Max function in python возвращает неправильные результаты

file1 = open ('Cortex_vs_Liver_trial.csv', 'rb') 
    reader1 = csv.reader(file1) 

    next(reader1, None) # skip the headers 
    for col in reader1: 
     print (col[3:6]) 
     Max1 = max (col[3:6]) 
     Min1 = min (col[3:6]) 
     print 'The maximun is:', Max1 
     print 'The minimum is:', Min1 
     print col[6:9] 
     Max2 = max (col[6:9]) 
     Min2 = min(col[6:9]) 
     print 'The maximun is:', Max2 
     print 'The minimum is:', Min2 

    file1.close() 

exmaple моего выхода:

['82 .61' , '92 .86' , '50 .00' ] Maximun является: 92,86 Минимум: 50,00

['86 0,21' , '100.00', '96 .30' ] Maximun является: 96,30 минимум: 100,00

Я не уверен, что я сделал неправильно. Некоторые советы будут оценены.

Спасибо.

+3

Вы сравниваете строки не числовые данные. Используйте: 'max (col [3: 6], key = float)' –

+0

Большое спасибо. Работал как храм! – user3302763

ответ

3

Ваши элементы списка - это строки. Вы должны преобразовать их в float, чтобы избежать сравнения лексически (по алфавиту, по одному символу за один раз, где '100' < '2' потому 1 < 2)

intcol = [int(x) for x in col] 
Max1 = max(intcol[3:6]) 
Min1 = min(intcol[3:6]) 

Если вы на самом деле хотите, строки, в этом случае не сделать новый список, и просто передать key=float ваших max() функции:

Max1 = max(col[3:6], key=float) 
Смежные вопросы