我在Python语言中遇到了一个问题,如果清单1中的所有数字都能被清单2中的至少一个数字整除,我需要函数返回True。为此,我尝试使用All函数,如下所示:
for num1 in List1:
if all(num1 % num2 == 0 for num2 in List2)
return True
但这样做的问题是,它会检查列表1中的所有数字是否都能被列表2中的所有数字整除。
我想知道是否有一种方法可以让list1的所有数字都可以被list2中的至少一个数字整除?例如:
List_1=[15,10,4,8,12]List_2=[2,5,3]输出True
List_1=[15,10,7,8,12]List_2=[2,5,3]输出FALSE
在第二种情况下将为FALSE,因为7不能被列表2中的任何一个数字整除
2条答案
按热度按时间pkwftd7m1#
您可以在理解中组合
all
和any
:如果您想检查列表1中的任何数字是否可以被列表2中的至少一个数字整除,您可以按如下方式重新构造上面的语句:
2exbekwf2#
你就快到了。List comprehensions可以包含任意数量的变量,在这种情况下,将考虑这些变量的所有组合。你可以简单地说
这相当于
顺便说一句,使用snake_case表示变量,使用PascalCase表示类是很习惯的,所以理想情况下,
List1
和List2
应该分别编写为list_1
(或仅使用list1
)和list_2
。@ThePyGuy也提出了很好的观点。如果第二个参数是
0
和ZeroDivisionError: integer division or modulo by zero
,则modulo operator失败。如果您预期List2
可能包含0
值,则还应在尝试除法之前进行检查,即将条件修改为if l2_elm == 0 or l1_elm % l2_elm
。编辑:OP表示,它们实际上意味着检查
List1
中的所有值是否可以被List2
中的任何值整除。对于这种情况,以下代码是合适的这正是@ThePyGuy最初的答案。这相当于