如果 list_1
中的所有数字都可以被 list_2
中的至少一个数字整除,我需要此函数返回 True
。我尝试为此使用 all 函数:
for num1 in list_1:
if all(num1 % num2 == 0 for num2 in list_2)
return True
我的解决方案的问题是它检查 list_1
中的所有数字是否可以被 list_2
中的所有数字整除,而这不是我所要求的。
我想知道是否有一种方法可以使 list_1
的所有数字在 list_2
中至少有一个因子?一个例子是:
List_1 = [15, 10, 4, 8, 12] List_2 = [2, 5, 3] 输出真
List_1 = [15, 10, 7, 8, 12] List_2 = [2, 5, 3] 输出假
第二种情况为 False,因为 7 不能被 list_2
中的任何数字整除。
最佳答案
您可以在理解中组合all
和any
:
>>> l1=[8,10,20]
>>> l2=[2,3]
>>> any(all(n1%n2==0 for n1 in l1) for n2 in l2)
True
如果你想检查 list1 中的任何数字应该至少被 list 2 中的一个数字整除,你可以按如下方式重组上面的语句:
>>> l1,l2=[15, 10, 4, 8, 12],[2, 5, 3]
>>> all(any(n1%n2 for n2 in l2) for n1 in l1)
True
关于python - 两个可分割列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73760165/