第一行:從 系統 引入 標準輸入函式庫
第二行:讀取用不到的 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: 我覺得保留原始字串輸出,應該會比較快吧?