Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用helper函数排序-helper函数能否返回多个变量?_Python_Sorting_Return - Fatal编程技术网

Python 使用helper函数排序-helper函数能否返回多个变量?

Python 使用helper函数排序-helper函数能否返回多个变量?,python,sorting,return,Python,Sorting,Return,我有两个列表:数字和组。我使用了一个helper函数对列表进行排序。我想知道的是,是否可以从函数中返回另一个变量,比如'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 =

我有两个列表:
数字
。我使用了一个helper函数对列表进行排序。我想知道的是,是否可以从函数中返回另一个变量,比如'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 3,则可以通过以下语句实现:

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\u 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']

如果您使用的是Python 3,则可以通过以下语句实现:

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\u 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']

来自@ekhumoro的答案可能就是你想要的

另一种方法是,利用Python中,
功能是对象/一等公民:

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

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

    values.sort(key=helper)
    return helper.wasSorted

print(sort_priority(numbers, group))
另外,“sorted”是内置函数的名称,
这可能会引起一些混乱

(因此将其改为“wasorted”)。

来自@ekhumaro的答案可能就是你想要的

另一种方法是,利用Python中,
功能是对象/一等公民:

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

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

    values.sort(key=helper)
    return helper.wasSorted

print(sort_priority(numbers, group))
另外,“sorted”是内置函数的名称,
这可能会引起一些混乱

(因此将其改为“wassorder”)。

我不清楚您所说的“另一个变量”是什么意思。你是说另一种类型吗?你的意思是返回多个变量吗?如果满足“if”条件,我需要返回true。例如,根据助手函数排序我不清楚“另一个变量”是什么意思。你是说另一种类型吗?你的意思是返回多个变量吗?如果满足“if”条件,我需要返回true。ie,根据辅助函数排序