有没有一种方法可以简化这段代码,而不必一遍又一遍地调用相同的函数?

时间:2019-02-12 02:05:29

标签: python-3.x list-comprehension

我正在与欧拉计划一起玩,并且我有一个充满素数的文件。

我有一个函数可以查看这些素数并提取素因。我使用的表达式如下

def prime_factors(n, fastfactor=True):
    if fastfactor:
        with open(primefile, 'r') as primelist:
            primes = [int(x.strip()) for x in primelist if int(x.strip()) <= n and n % int(x.strip()) == 0]
    return primes

代码工作正常,但是我想将列表表达式简化为这样:

[x for int(x.strip()) in primelist if x <= n and n % x == 0]

但是,我无法弄清楚任何事情来简化和更清楚地表达这一观点。

1 个答案:

答案 0 :(得分:1)

您显然可以使用for循环,存储int(x.strip())的结果:

单行方式是嵌套列表推导(在推导内部有生成器):

[x for x in (int(x_raw.strip()) for x_raw in primelist) if x <= n and n % x == 0]