python助手函数和返回语句

python助手函数和返回语句,python,sorting,tuples,return-value,Python,Sorting,Tuples,Return Value,下面的函数(sort_priority_0)对数字列表进行排序,但将一组数字排在第一位。return语句中元组的用途是什么 numbers = [8, 3, 1, 2, 5, 4, 7, 6] group = {2, 3, 5, 7} def sort_priority_0(values, group): def helper(x): if x in group: return 0, x return 1, x value

下面的函数(sort_priority_0)对数字列表进行排序,但将一组数字排在第一位。return语句中元组的用途是什么

numbers = [8, 3, 1, 2, 5, 4, 7, 6]
group = {2, 3, 5, 7}

def sort_priority_0(values, group):
    def helper(x):
        if x in group:
            return 0, x
        return 1, x
    values.sort(key=helper)

python sort_priority_0.py 
[2, 3, 5, 7, 1, 4, 6, 8]
def sort_priority_1(values, group):
    def helper(x):
        if x in group:
            return x
        return x
    values.sort(key=helper)

python sort_priority.py 
[1, 2, 3, 4, 5, 6, 7, 8]
如果修改函数并删除元组,则排序将按升序进行。请解释为什么在return语句中使用和不使用tuple时行为会有如此大的不同

numbers = [8, 3, 1, 2, 5, 4, 7, 6]
group = {2, 3, 5, 7}

def sort_priority_0(values, group):
    def helper(x):
        if x in group:
            return 0, x
        return 1, x
    values.sort(key=helper)

python sort_priority_0.py 
[2, 3, 5, 7, 1, 4, 6, 8]
def sort_priority_1(values, group):
    def helper(x):
        if x in group:
            return x
        return x
    values.sort(key=helper)

python sort_priority.py 
[1, 2, 3, 4, 5, 6, 7, 8]

sort\u priority\u 0
中的
helper
功能确保首先按升序对组中的元素进行排序,然后按升序对其余元素进行排序,如下所示

print(sort_priority_0(numbers,{2, 3, 5, 7}))
#[2, 3, 5, 7, 1, 4, 6, 8]
print(sort_priority_0(numbers,{4, 2, 5, 8}))
#[2, 4, 5, 8, 1, 3, 6, 7]
print(sort_priority_0(numbers,{6, 4, 5, 1}))
#[1, 4, 5, 6, 2, 3, 7, 8]

为组中的元素返回
0,x
,确保在排序时将这些元素推到列表的前面,剩余的元素通过
1,x
推到列表的后半部分,然后按升序排序,因为排序发生在
0
1
,然后在数字中,
排序
中的
参数执行一个函数。您可以这样想:如果提供了
key
,那么输入iterable将被排序,就像
key
应用于每个元素一样

元组
按第一个元素排序,然后按第二个元素排序,依此类推。在这种情况下,key函数将iterable中的所有元素转换为
元组
,如果数字在优先级组中,则第一个元素为0,否则为1

这意味着,由于默认情况下,
sort
是升序的,因此所有优先级编号都将排在第一位,并且它们在内部将按升序排序

为了举例说明,您可以将该过程视为具有以下步骤:

  • 从[8,3,1,2,5,4,7,6]开始
  • 应用
    获取:
  • 按升序对结果进行排序,以获得:
  • 获取原始数据的对应元素(在本例中为
    元组的第二个元素,尽管由于这是基于索引的,原始元素不需要从键函数的输出中恢复):

  • 所以您知道
    .sort()
    中的
    参数的作用是什么?@klauds。是的,我只是不清楚示例中元组的用途。
    [2, 3, 5, 7, 1, 4, 6, 8]