调用列表理解for循环中的方法

问题描述:

我想知道是否有更多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

如果您不需要列表,请不要使用列表理解。只需使用一个循环。