all()函数;迭代if语句中的列表(python 3)

时间:2015-04-22 14:13:01

标签: python python-3.x

所以我一直试图解决" Project Euler"问题并陷入其中一个问题。 我试图遍历列表并检查给定数字是否可以按给定列表中的每个值均匀划分。 我已经尝试过all()函数,认为它是最好的,但不是我得到一个值错误或根本没有。 我已经尝试了很多与all()函数的syntex组合,但没有运气。

div_lst = [x for x in range(1, 21)]
num_list = [x for x in range(1, 1000000)]

for x in num_list:
    if all(x % y for y in div_lst):
        print(x)

我已经尝试了

all((x % y == 0) for y in div_lst) 
all((x % y for y in div_lst) == 0) 

还有更多,似乎无法弄明白。

1 个答案:

答案 0 :(得分:4)

您的语法

all((x % y == 0) for y in div_lst) 

做你想做的事;它会检查xyy中的每个div_lst是否可以x整除。你没有打印任何东西的唯一原因是因为答案比10 ** 6大得多,所以你没有尝试正确的all(x % y for y in div_lst)

相比之下,all((x % y != 0) for y in div_lst)相当于Products,这不是你想要的,并且由于所有整数都与0一致,因此无论如何都没有解决方案。

(提示:这不是解决这个问题的正确方法。阅读“最低公倍数”,以及如何计算它们。)