Python String型列表求最值的问题

Posted 星尘tt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python String型列表求最值的问题相关的知识,希望对你有一定的参考价值。

最近在写一个项目的时候发现了个很神奇的问题

temp_list=[\'9\',\'10\',\'10\',\'9\',\'10\']
print(max(temp_list)) # 9
print(min(temp_list)) # 10

最大值变成了9,而最小值变成了10。导致我在一个Excel表中的数据老是判断错误

分析之后原因如下:

如果比较字符串的大小,则比较的是字符的ASCII编码的大小。

在比较时,设置一个计数器,从零开始,一直循环到最短的那个字符结束,一位一位进行比较,

1.如果 字符串1的第n位的ASCII码值 等于 字符串2的第n位的ASCII码值
则 继续比较下一位
2.如果 字符串1的第n位的ASCII码值 大于 字符串2的第n位的ASCII码值
则 输出结果:1,表示字符串1 > 字符串2;
3.如果 字符串1的第n位的ASCII码值 小于 字符串2的第n位的ASCII码值
则 输出结果:-1 表示字符串1 < 字符串2;
4.如果 每一位的ASCII码值都相等,而且长度相同,
则 输出结果:0 表示字符串1 == 字符串2;
5.如果 字符串1是字符串2的前m位,例如 abcd 与abcdef 比较,
则 字符串1<字符串2.
原因是,到第5位时,字符串1的ASCII值是0,而字符串2的ASCII值为\'e\',即十进制的101,当然是字符串2大了.

 

这边的话,相当于是9跟1作比较,固然最后得出来的字符串‘9’大于‘10’

比较好的办法就是写个函数,把字符串转换成int型

def stringToInt(temp_list):
    tt_list=[]
    for i in temp_list:
        tt_list.append(float(i))
    return tt_list

字符串的问题虽然简单,但是很容易出错,另外,Python中做判断的时候一定要注意数据类型

以上是关于Python String型列表求最值的问题的主要内容,如果未能解决你的问题,请参考以下文章

Java 数组遍历和求最值的方法图解

请问在高中数学里求最值是如何运用切比雪夫多项式的。

三分算法求最值

求三道用mathematica求最值的代码~~急~~~!!!

求三道用mathematica求最值的代码~~急~~~!!!

JAVA集合06_流式编程GroupBy和求最值示例