此代码用于对big_list进行排序,但将small_list放在big_list的开头。 我不明白参数'x'是如何传递给def helper的,这里返回(0,x)和(1,x)的含义是什么。 任何帮助将不胜感激。
def sort_list(value, group):
def helper(x):
if x in group:
return (0,x)
return (1,x)
value.sort(key=helper)
big_list = [8,3,1,2,5,4,7,6]
small_list = [2,3,5,7]
sort_list(big_list, small_list)
print(big_list)
[2, 3, 5, 7, 1, 4, 6, 8]
答案 0 :(得分:1)
(0,x)
是两个成员的元组。关键的见解是,元组按第一个元素排序,按第二个元素消除歧义,然后是下一个...,并且仅在每个成员相等时才相等。因此,例如,
(0, 0) < (0, 1) < (0, 2) < (1, 0) < (1, 1) < (1, 2)
因此,helper
作为排序键将在group
之外的任何元素之前对group
中的所有元素进行排序;然后再按每个部分中的值排序。这说明2, 3, 5, 7
被订购,1, 4, 6, 8
被订购,前者在后者之前。