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,根据辅助函数排序