#26640: [Python]0.6秒、三行簡潔寫法參考


406490150@gms.tku.edu.tw (我是朱朱)

學校 : 國立交通大學
編號 : 139794
來源 : [140.113.236.122]
最後登入時間 :
2022-09-03 11:13:16
d550. 物件排序 | From: [218.164.111.57] | 發表日期 : 2021-08-18 02:37

第一行:從 系統 引入 標準輸入函式庫

第二行:讀取用不到的 N,M (stdin會自動StopIteration,split()會自動生成list)

第三行:輸出並排序

 

第三行詳細說明:

print(*list)  -> 可以直接將list內容印出

sorted(...)  ->  回傳是一個list

 

sorted(iterable, key = 一個函式)

stdin  -> 是一個iterable,讀取每行(包含換行符號)

lambda -> 無名函式

 

Q: 為什麼需要key?

A: 因為字串比較是逐字比較,例如'10007' < '19',原因在於'0'<'9'

 

Q: 什麼樣的函式可以達成「字串內的數值比較」呢?

A:

1. 將字串以空白分離

2. 轉換每個  數字字串  變成  int

3. tuple(或list)會由左至右逐一比較

tuple(map(int, line.split()))

 

Q: 可以直接印stdin喔?

A: 因為stdin會讀到換行符號

 

Q: 為什麼不先將每行轉成int再排序?而是要用key

A: 我覺得保留原始字串輸出,應該會比較快吧?

 
ZeroJudge Forum