作者Tiberius (渴望平凡的幸福)
看板Python
标题Re: [闲聊] 人急造反,狗急跳墙
时间Sat Oct 27 22:47:58 2007
这两篇写下来不知道算不算灌水文 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)
1F:推 huggie:任何时候只要写 \ 就可以以下一行继续了 10/28 10:24
2F:→ huggie:不过这可能不是 Python 功能 是 shell 提供的? 10/28 10:24
3F:推 willhunting:这的确应该是shell提供的 10/29 01:07
4F:推 yungyuc:如果写 one-liner 是 shell,但 Python script 也是用 \ 10/29 08:32