看板 Python 關於我們 聯絡資訊
這兩篇寫下來不知道算不算灌水文 XD 總之這套外表樸實到不行,原始碼看起來嚇死人的東西 今天順利地在中興大學的運動會印了一疊檢錄表跟獎狀,算是沒有丟臉wwwwwww ※ 引述《Tiberius (渴望平凡的幸福)》之銘言: : Python 也是可以寫得很恐怖的 ... : first = 1 : for i in range(max(map(len, cur_count.itervalues()))): : ret += ['%s\t%s\t%s' % ( : # 隊伍名稱 : cur_team_name if first else '', : # 所屬各組單項起迄 : '\t'.join(map(lambda k: '%s\t%s\t%s' % : ((cur_count.get(k.id) or [])[i:i+1] or : [('', '', '')])[0], klasses)), : # 小計 : reduce(lambda x, y: x + y[2], : map(lambda x: (x[i:i+1] or : [(0, 0, 0)])[0], cur_count.itervalues()), 0))] : first = 0 first = 1 for i in range(max([len(x) for x in cur_count.itervalues()])): ret += ['%s\t%s\t%s' % ( # 隊伍名稱 cur_team_name if first else '', # 所屬各組單項起迄 '\t'.join(['%s\t%s\t%s' % (cur_count.get(k.id, [])[i:i+1] or [('', '', '')])[0] for k in klasses]), # 小計 sum([(x[i:i+1] or [(0, 0, 0)])[0][2] for x in cur_count.itervalues()]))] first = 0 最近的心得: 1. List comprehension 可能需要多打一些字, 可能可以省一些字 不過幾乎一定「比較容易看懂」 2. Python 只要用了 () 就可以在某種程度上無視縮排了 如果搭配 [ x for x in y if z ] 寫法或 lambda 所提供的邏輯能力 ...... (惡寒) 3. 如果您跟小弟一樣愛用 vim 的話, 讓 vim 凸顯內建函式名稱是個不錯的選擇 可以避免不小心蓋掉內建函式以致囧爆的情形不斷發生 因為 id, list, len 這種東西實在太容易在無意間拿來當暫存變數了 ... (我啦) 而且像 id 這種資料庫欄位, 凸顯一下應該也是好事 (咦) 只要在 .vimrc 加入下面這行即可: let python_highlight_builtins = 1 或者更進一步,連內建 Exception 名稱、數字、不小心混用 Tab/Space 也凸顯: let python_highlight_all = 1 (詳情請洽 VIM 的 syntax/python.vim ) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.126.63.79 ※ 編輯: Tiberius 來自: 59.126.63.79 (10/27 22:56)
huggie:任何時候只要寫 \ 就可以以下一行繼續了 10/28 10:24
huggie:不過這可能不是 Python 功能 是 shell 提供的? 10/28 10:24
willhunting:這的確應該是shell提供的 10/29 01:07
yungyuc:如果寫 one-liner 是 shell,但 Python script 也是用 \ 10/29 08:32