Python中该排序示例为何结果不符?技术问询
为什么Python列表排序结果不符合预期?
嘿,这个问题我之前也踩过坑!咱们来一步步拆解:
首先你执行的代码是这样的:
>>> a = ['7','30','41','14','39','42'] >>> a.sort() >>> a ['14', '30', '39', '41', '42', '7']
但你预期的结果是['7', '14', '30', '39', '41', '42'],对吧?
问题根源
问题出在元素的类型上:你的列表里全是字符串(str类型),而Python默认的sort()方法对字符串采用的是字典序排序(也就是按字符的ASCII值逐个比较)。
举个具体的例子:比较'14'和'7'时,会先对比第一个字符——'1'的ASCII码是49,'7'是55,49比55小,所以'14'就排在了'7'的前面,完全不管整个字符串对应的数值大小。
解决办法
如果想要按照数值大小排序,只需要给sort()方法传入key参数,指定排序时把每个元素转换成整数再比较:
>>> a = ['7','30','41','14','39','42'] >>> a.sort(key=int) >>> a ['7', '14', '30', '39', '41', '42']
这样就得到你想要的结果啦!
内容的提问来源于stack exchange,提问作者raiyan22
相关产品推荐
相关产品推荐

