首页 > 解决方案 > 这段代码中 (0,x) 和 (1,x) 的含义是什么?

问题描述

此代码用于对 big_list 进行排序,但将 small_list 放在 big_list 的开头。我不明白参数 'x' 是如何传递给 def 助手的,这里的 return (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]

标签: python-3.x

解决方案


(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被命令,并且前者先于后者。


推荐阅读