2016-06-28 30 views
1

我想知道是否有更多pythonic方式,或者即使這樣做是可以接受的。調用列表理解for循環中的方法

我想調用列表理解中的某些方法,雖然我不需要返回任何值,但它只是一個setter。

代碼:

def do_logic(self): 
     [self.set_key(j) for i in xrange(2, CONSTANT) if self.lis[i] != 1 for j in xrange(i*2, CONSTANT, i)] 

在我眼裏它似乎並不像正確的方式給它,有什麼建議?

+2

等等,所以你實際上並沒有使用這個列表?只需使用for循環。 –

+0

For循環更快。也許更多pythonic將是**地圖**。 – Prune

+2

@普蘭地圖是*最糟糕的*。因爲如果你試圖在python3中運行代碼,它甚至不會執行調用,因爲在python3中map是懶惰的。在任何情況下,調用'map'或列表理解都是**表達式**和表達式應該儘可能無副作用,它們的目的是*返回一個值*。所以如果你沒有價值返回你應該只使用簡單的語句:即明確的「for」。 – Bakuriu

回答

2

如果您不需要列表,請不要使用列表理解。只需使用一個循環。