Re: [閒聊] 人急造反,狗急跳牆

看板Python作者 (渴望平凡的幸福)時間17年前 (2007/10/27 22:47), 編輯推噓3(301)
留言4則, 3人參與, 最新討論串2/5 (看更多)
這兩篇寫下來不知道算不算灌水文 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)

10/28 10:24, , 1F
任何時候只要寫 \ 就可以以下一行繼續了
10/28 10:24, 1F

10/28 10:24, , 2F
不過這可能不是 Python 功能 是 shell 提供的?
10/28 10:24, 2F

10/29 01:07, , 3F
這的確應該是shell提供的
10/29 01:07, 3F

10/29 08:32, , 4F
如果寫 one-liner 是 shell,但 Python script 也是用 \
10/29 08:32, 4F
文章代碼(AID): #178q-VHn (Python)
文章代碼(AID): #178q-VHn (Python)