I am trying to find the Max and Min in a set of numbers from a CSV file. My code keeps returning the wrong number for Max function for some rows. Here is my code:
JavaScript
x
8
1
with open('Cortex_vs_Liver_trial.csv', newline='') as infile:
2
reader = csv.reader(infile)
3
4
for row in reader:
5
print(row)
6
print('The maximun is:', max(row))
7
print('The minimum is:', min(row))
8
An example of my output:
JavaScript
1
4
1
['86.21', '100.00', '96.30']
2
The maximun is: 96.30
3
The minimum is: 100.00
4
I am not sure what I have done wrong. Some advice would be appreciated.
Advertisement
Answer
Your list elements are strings. You need to convert them to float
to avoid comparing lexicographically (alphabetically, one character at a time, where '100' < '2'
because 1 < 2
)
JavaScript
1
4
1
numrow = [float(x) for x in row]
2
print('The maximun is:', max(numrow))
3
print('The minimum is:', min(numrow))
4
Unless you actually want strings, in which case don’t make the new list, and just pass key=float
to your max()
function:
JavaScript
1
2
1
max(numrow, key=float)
2