python助手函数和返回语句
下面的函数(sort_priority_0)对数字列表进行排序,但将一组数字排在第一位。return语句中元组的用途是什么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
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
是升序的,因此所有优先级编号都将排在第一位,并且它们在内部将按升序排序
为了举例说明,您可以将该过程视为具有以下步骤:
键
获取:元组的第二个元素,尽管由于这是基于索引的,原始元素不需要从键函数的输出中恢复):
所以您知道
.sort()
中的键
参数的作用是什么?@klauds。是的,我只是不清楚示例中元组的用途。
[2, 3, 5, 7, 1, 4, 6, 8]