使用辅助函数排序 - 辅助函数可以返回多个变量吗?

问题描述 投票:1回答:1

我有两个名单:numbersgroup。我使用辅助函数对列表进行排序。我想知道的是,是否可以从函数中返回另一个变量,'sorted'='True'?

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

def sort_priority(values, group):
    sorted = 'False'
    def helper(x):
        if x in group:
            sorted = 'True' 
            return (0, x)
        else:
            return (1, x)

    values.sort(key=helper)
    return sorted
python sorting return helper-functions
1个回答
0
投票

如果您使用的是Python 3,则可以使用nonlocal语句实现此目的:

def sort_priority(values, group):
    sorted = 'False'
    def helper(x):
        nonlocal sorted
        if x in group:
            sorted = 'True'
            return (0, x)
        else:
            return (1, x)    
    values.sort(key=helper)
    return sorted

这允许外部范围中的sorted变量被辅助函数的内部范围修改 - 因此sort_priority将返回"True"

如果您使用的是Python 2,则nonlocal语句不可用,但类似的内容可以像这样实现:

def sort_priority(values, group):
    nonlocals = {'sorted': 'False'}
    def helper(x):
        if x in group:
            nonlocals['sorted'] = 'True'
            return (0, x)
        else:
            return (1, x)    
    values.sort(key=helper)
    return nonlocals['sorted']
© www.soinside.com 2019 - 2024. All rights reserved.