这段代码中(0,x)和(1,x)是什么意思?

时间:2019-10-01 08:51:50

标签: python-3.x

此代码用于对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]

1 个答案:

答案 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被订购,前者在后者之前。