Python列表含科学计数法数值,求最小值结果错误的问题
问题原因
你得到错误结果的核心原因是列表里存储的是字符串类型的数值,Python的min()函数对字符串做比较时,是按字符的ASCII码字典序判断,而非实际数值大小。比如字符串'0.005'会比'1.59e-32'被判定为更小——因为字符'0'的ASCII码比'1'小,这就导致了错误的最小值结果。
修复方案
将读取到的字符串转换为float类型后再加入列表,这样min()就能正确比较数值大小。修改后的代码如下:
import csv with open('ar_blast.txt') as file: reader = csv.reader(file, delimiter='\t') lista = [] count = 0 for row in reader: count += 1 # 把字符串转为浮点型数值 num_value = float(row[10]) lista.append(num_value) # 遍历完成后再打印结果,避免冗余输出 print(lista) print(f"最小值: {min(lista)}")
额外优化提示
- 把
print(lista)和print(min(lista))移出循环,否则每添加一个元素就打印一次,输出会非常冗余,遍历完所有行后打印一次即可。 - 用
count += 1替代count = count +1,写法更简洁符合Python习惯。
内容的提问来源于stack exchange,提问作者Go4ty01
相关产品推荐
相关产品推荐

