猿问

Python 列表 - 对整数排序,然后对字符串进行排序

我需要使用该sorted()函数才能从这里获得:

test2 = [1,'2',3,'4',5,'A']

到这里(创建一个新列表,它首先包含已排序的整数,然后是已排序的字符串):

test2 = [1,3,5,'2','4','A']


慕田峪9158850
浏览 262回答 3
3回答

眼眸繁星

sorted(test2,&nbsp;key=lambda&nbsp;x:&nbsp;(isinstance(x,&nbsp;str),&nbsp;x))这依赖于False < True元组按字典顺序排序的事实。更多细节:元组通常用于按多个指标进行排序。考虑一下:key=lambda&nbsp;x:&nbsp;isinstance(x,&nbsp;str)该key关键字参数来sorted告诉它由给定的调用,而不是由vaules自己的结果值进行排序。此键将返回False整数和True字符串。由于False相当于0和Trueto1,False被认为更小,所有整数将在列表中排在第一位。这只是我们想要的一半,因为整数和字符串之间没有排序。这是元组进来的。上面的关键功能:key=lambda&nbsp;x:&nbsp;(isinstance(x,&nbsp;str),&nbsp;x)为每个元素返回一个元组。元组首先按它们的第一个元素排序。如果两个元组具有等效的第一个元素,则比较它们的第二个元素,依此类推。这称为词典排序。假设我们有这个列表:this&nbsp;=&nbsp;["a",&nbsp;5,&nbsp;"b",&nbsp;3]key 函数将按顺序返回:(True,&nbsp;"a"),&nbsp;(False,&nbsp;5),&nbsp;(True,&nbsp;"b"),&nbsp;(False,&nbsp;3)元组将首先按它们的第一个元素(布尔值)排序:(False,&nbsp;5),&nbsp;(False,&nbsp;3),&nbsp;(True,&nbsp;"a"),&nbsp;(True,&nbsp;"b")现在,我们有两对元组,它们的第一个元素相等。每对将按其第二个元素在内部排序:(False,&nbsp;3),&nbsp;(False,&nbsp;5),&nbsp;(True,&nbsp;"a"),&nbsp;(True,&nbsp;"b")最终结果不是元组本身,而是每个元组的关键函数的相应输入:[3,&nbsp;5,&nbsp;"a",&nbsp;"b"]实际上,该算法不需要“两次”排序,但概念上是相同的。
随时随地看视频慕课网APP

相关分类

Python
我要回答