我正在与欧拉计划一起玩,并且我有一个充满素数的文件。
我有一个函数可以查看这些素数并提取素因。我使用的表达式如下
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]
但是,我无法弄清楚任何事情来简化和更清楚地表达这一观点。
答案 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]