简化列表

时间:2012-11-26 07:23:47

标签: python simplify simplification

如何简化此代码?这是个问题。

    stat_keys.append(self.request.get("stat_one"))
    stat_keys.append(self.request.get("stat_two"))
    stat_keys.append(self.request.get("stat_three"))
    stat_keys.append(self.request.get("stat_four"))

4 个答案:

答案 0 :(得分:3)

stat_keys += [self.request.get(k) for k in ('stat_one', 'stat_two', 'stat_three', 'stat_four')]

stat_keys += map(self.request.get, ('stat_one', 'stat_two', 'stat_three', 'stat_four')))

map(stat_keys.append, map(self.request.get, ('stat_one', 'stat_two', 'stat_three', 'stat_four')))

我建议第一个。

答案 1 :(得分:1)

如果不知道任何变量是什么,很难回答,但是如何:

for stat in ('stat_one', 'stat_two', 'stat_three', 'stat_four'):
    stat_keys.append(self.request.get(stat))

或者,使用生成器表达式:

[stat_keys.append(self.request.get(stat)) for stat in ('stat_one', 'stat_two', 'stat_three', 'stat_four')]

答案 2 :(得分:1)

使用生成器表达式更改为.extend()

stat_keys.extend(self.request.get(stat) for stat in('stat_one', 'stat_two', 'stat_three', 'stat_four'))

答案 3 :(得分:0)

s_list = [ "stat_one", "stat_two", "stat_three", "stat_four" ]
[ stat_keys.append(self.request.get(s)) for s in s_list ]