亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python 輔助函數和返回語句

python 輔助函數和返回語句

LEATH 2022-01-18 15:38:46
下面的函數 (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]如果我修改函數并刪除元組,則排序按升序完成。請解釋為什么在 return 語句中有和沒有元組的情況下行為如此不同?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]
查看完整描述

2 回答

?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

keyin 參數sort接受一個函數。你可以這樣想:如果key提供了,那么輸入的可迭代對象將被排序,就好像key應用于每個元素一樣。

tuples按第一個元素排序,然后是第二個元素,依此類推。在這種情況下, key 函數將 iterable 中的所有元素轉換為tuples,其中如果數字在優先級組中,則第一個元素為 0,否則為 1。

這意味著,由于sort默認升序,所有優先級數字將排在第一位,并且它們將在內部按升序排序。

為了說明,您可以將過程視為具有以下步驟:

  1. 從...開始 [8, 3, 1, 2, 5, 4, 7, 6]

  2. 申請key獲得:

[(1, 8), (0, 3), (1, 1), (0, 2), (0, 5), (1, 4), (0, 7), (1, 6)]
  1. 將結果按升序排序得到:

[(0, 2), (0, 3), (0, 5), (0, 7), (1, 1), (1, 4), (1, 6), (1, 8)]
  1. 取原始數據的相應元素(在這種情況下,是 的第二個元素tuple,盡管因為這是基于索引的,所以不需要從鍵函數的輸出中恢復原始元素):

[2, 3, 5, 7, 1, 4, 6, 8]


查看完整回答
反對 回復 2022-01-18
?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

helper函數 insort_priority_0確保首先對組中的元素按升序排序,然后將其余元素按升序排序,如下所示。


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,然后在數字內


查看完整回答
反對 回復 2022-01-18
  • 2 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號