聊聊Python|聊聊Python String型列表求最值的问题
最近在写一个项目的时候发现了个很神奇的问题
temp_list=['9','10','10','9','10']print(max(temp_list)) # 9print(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|聊聊Python String型列表求最值的问题】到此这篇关于Python String型列表求最值的问题的文章就介绍到这了,更多相关Python String型列表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- python中绑定方法与非绑定方法的实现示例
- Python函数的嵌套详解
- 【Python】字符串修改方法 - 大小写转换、删除空白字符、字符串对齐
- 【Python】字符串常用3个查找操作方法 - 详细讲解-代码示例
- 【Python】字符串3个常用修改操作方法的用法 - replace()、split()、join()
- 生产环境频繁内存溢出,原来就是因为这个“String类”
- 手把手教你完成贪吃蛇的编写(Python)
- python|疫情防控通每日自动汇报讲解
- python|python 视频ai换脸_Python实现AI换脸--Faceswap
- python机器人运动学_机械臂正运动学-DH参数-Python快速实现