您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 这个用于排序数字的lambda如何工作?

5b51 2022/1/14 8:21:48 python 字数 2727 阅读 519 来源 www.jb51.cc/python

#code for sorting big integers lis = ['234', '5', '2', '12435645758'] lis.sort(key = lambda x: len(x)) print lis #output ['5', '2', '234', '12435645758'] lis.sort(key = lambda x:

概述

#code for sorting big integers
lis = ['234','5','2','12435645758']

lis.sort(key = lambda x: len(x))
print lis
#output ['5','234','12435645758']

lis.sort(key = lambda x: (len(x),x))
print lis
#output ['2','12435645758']

我试图在Python中对大数字字符串进行排序而不将字符串转换为整数,并且无法理解如何评估这些lambda表达式.

一个lambda表达式是基于字符串的长度排序并对列表进行排序,但第二个表达式是什么?我想知道如何评估第二个lambda表达式.

Python对元组lexicographically进行排序,也就是说,首先比较两个元组的第一个元素,然后如果它们相同,则继续比较第二个元素等,直到没有要比较的元素为止.

因为元组同时保存长度和字符串本身,对于相等长度的字符串,字符串接下来按其实际值排序.这会在末尾放置较长的字符串,在前面放置较短的字符串,在每组长度相等的字符串中,字符串按其值排序.

再次查看输入示例,对于’234’和’5′,生成元组(3,’5′)具有不相等的第一个元素,因此(1,’5′)在排序之前( 3,’234′).但是对于’5’和’2′,得到的元组是(1,’5′)和(1,’2′)(都是1个字符长),并且这些元组的第一个元素是相等的.所以它们在第二个元素上排序,在’5’之前加上’2′.

没有这样的断路器(所以键是相同的),Python保持相对顺序完整.对于你的第一个例子,sort键只是len(x),并且因为’5’和’2’具有相同的长度,并且没有别的东西可以比较它们,所以Python以相同的相对顺序将它们放入输出中,‘2’之前’5′.

总结

以上是编程之家为你收集整理的python – 这个用于排序数字的lambda如何工作?全部内容,希望文章能够帮你解决python – 这个用于排序数字的lambda如何工作?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶