在python中循环,而不创建不会使用的变量

时间:2016-03-19 21:34:25

标签: python python-2.7 loops

这是我的代码:

def generate_float_population(count, size):
    return [generate_float_individual(size) for item in range(count)]

我的IDE说,不使用变量“item”。我想知道,如果有更优雅的方式来做到这一点。

3 个答案:

答案 0 :(得分:1)

如果每次都必须调用该函数,那么这将起作用

def generate_float_population(count, size)
    return map(generate_float_individual, [size] * count)

但是,如果每次都产生相同的值

def generate_float_population(count, size)
    return [generate_float_individual(size)] * count

答案 1 :(得分:0)

如果generate_float_individual(size)在每次通话时都返回相同的结果,您可以这样做:

return [generate_float_individual(size)] * count

答案 2 :(得分:0)

由于变量是该函数的本地变量,它存在多少真的很重要吗?它很快就会消失,而且非常小。 你应该更担心创建一个不必要的range(),因为这会创建一个n个元素的列表(至少在Python 2.7中)。

您可以使用xrange创建它,或者使用类似的东西:

class CountDown(object):

    def __init__(self, n):
        self.n = n

    def __iter__(self):
        return self

    def next(self):
        if self.n <= 0:
            raise StopIteration()
        self.n -= 1
        return self.n

然后将其用于:

def generate_float_population(count, size):
    return [generate_float_individual(size) for item in CountDown(count)]