在列表理解期间清空列表Python

时间:2018-11-18 13:20:00

标签: python list-comprehension

我正在尝试查找除正数除以2018的数字(2017年除外)。 这是我的Python 3代码。我可以用第一种方法来做,但是想尝试列表理解。但是当我运行该列表时,该列表为空。

import math

def divisors(x):
  divisors = []
  for y in range(1,math.floor(x*0.5)+1):
    if x%y==0:
      divisors.append(y)
  divisors.append(x)
  return divisors

for x in range(2018):
  if sum(divisors(x)) == 2018:
    print(x,sum(divisors(x)))

print([x for x in range(1,2018) if (sum(divisors(x)))==0])

此外,任何其他用于简化代码或提高效率的技巧都将受到赞赏!

1 个答案:

答案 0 :(得分:0)

只需检查除数之和是否等于2018而不是0

import math

def divisors(x):
  divisors = []
  for y in range(1,math.floor(x*0.5)+1):
    if x%y==0:
      divisors.append(y)
  divisors.append(x)
  return divisors

for x in range(2018):
  if sum(divisors(x)) == 2018:
    print(x,sum(divisors(x)))

print([x for x in range(1,2018) if (sum(divisors(x)))==2018])