聊聊PythonString型列表求最值的问题
最近在写一个项目的时候发现了个很神奇的问题
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型列表求最值的问题的文章就介绍到这了,更多相关Python String型列表内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341