2012-11-26 33 views
0

該代碼如何簡化?就是那個問題。簡化列表

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")) 

回答

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

很難回答不知道什麼任何變量都有,但如何對這樣的:

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')] 
1

更改爲.extend()與發電機的表達:

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

假設'stat_keys'支持'extend',這是我們不從有關資料瞭解。 – aquavitae

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