Home > Back-end >  Finding the smallest number in a python list with scientific notation
Finding the smallest number in a python list with scientific notation

Time:12-18

I'm trying to find the smallest number in this list that I created from a txt column, but when I run the code it gives me the wrong smallest number.

This is my code:

import csv

with open('ar_blast.txt') as file:
    reader = csv.reader(file,delimiter='\t')

    lista = []
    count = 0

    for row in reader:
        count = count  1
        lista.append(row[10])
        print(lista)
        print(min(lista))

This is my output:

['1.59e-32', '4.57e-32', '2.76e-24', '2.17e-23', '4.73e-10', '0.006', '0.009', '0.012', '0.015', '0.040', '0.083', '0.19', '0.22', '0.72', '0.94', '2.4', '2.5', '3.0', '3.4', '4.9', '5.7', '6.2', '6.3', '9.1', '8.98e-18', '8.49e-14', '1.41e-13', '8.44e-12', '1.20e-11', '2.81e-10', '5.80e-04', '7.95e-04', '0.005', '0.005', '0.006', '0.019', '0.064', '0.065', '0.068', '0.073', '0.19', '0.19', '0.24', '0.47', '0.90', '2.0', '0.94', '1.1', '1.6', '1.6', '1.6', '1.7', '2.0', '2.1', '2.2', '3.3', '3.1', '5.2', '8.0', '9.8', '8.98e-18', '8.49e-14', '1.41e-13', '8.44e-12', '1.20e-11', '2.81e-10', '5.80e-04', '7.95e-04', '0.005', '0.005', '0.006', '0.019', '0.064', '0.065', '0.068', '0.073', '0.19', '0.19', '0.24', '0.47', '0.90', '2.0', '0.94', '1.1', '1.6', '1.6', '1.6', '1.7', '2.0', '2.1', '2.2', '3.3', '3.1', '5.2', '8.0', '9.8']   

0.005

What I want to print is the smallest number which clearly is not 0.005

CodePudding user response:

The problem is that the items in your list are str not numbers. For example:

>>> lista = ["0.005", "1.59e-32"]
>>> min(lista)
'0.005'

To fix that, you can convert the numbers into float like so:

>>> lista = list(map(float, lista))
>>> min(lista)
1.59e-32
  • Related