Ash*_*shy 8 python sorting list
说我有一个清单:
A = [1,2,3,4,5,6,7,8,9,0]
Run Code Online (Sandbox Code Playgroud)
和第二个清单:
B = [3,6,9]
Run Code Online (Sandbox Code Playgroud)
排序列表A的最佳方法是什么,以便与列表B中的项匹配的任何内容都将出现在开头,以便结果为:
[3,6,9,1,2,4,5,7,8,0]
Run Code Online (Sandbox Code Playgroud)
Hen*_*nyH 11
>>> A = [1,2,3,4,5,6,7,8,9,0]
>>> B = [3,6,9]
>>> sorted(A,key=lambda e: e not in B)
[3, 6, 9, 1, 2, 4, 5, 7, 8, 0]
Run Code Online (Sandbox Code Playgroud)
这是如何工作的:
sorted
根据key(element)
每个元素的结果对interable进行排序(key
is 的默认值None
导致它直接根据元素进行排序).
在我们的情况下,lambda lambda e: e not in B
将返回True
,如果e
不是在B
,或者False
如果e
是在B
.带有的元素False
被排序到前面,你最终会得到你的结果.如下所示:
>>> sorted([True,False,False])
[False, False, True]
Run Code Online (Sandbox Code Playgroud)