使用科学记数法查找python列表中的最小数字

dl5txlt9  于 2022-12-20  发布在  Python
关注(0)|答案(1)|浏览(87)

我试图在这个列表中找到最小的数字,这个列表是我从一个txt列创建的,但是当我运行代码时,它给了我一个错误的最小数字。
这是我的代码:

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))

这是我的输出:

['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
我要打印的是最小的数字,显然不是0.005

8i9zcol2

8i9zcol21#

问题是列表中的项目是str而不是数字。例如:

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

要解决这个问题,你可以像这样把数字转换成浮点数:

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

相关问题