Python 尝试检查整数列表中每个元素的条件
我试图定义一个方法来检查列表中的每个元素是否都是参数的一个因子 以下是我所拥有的:Python 尝试检查整数列表中每个元素的条件,python,Python,我试图定义一个方法来检查列表中的每个元素是否都是参数的一个因子 以下是我所拥有的: def factorall(x): if all(x % num for num in nums) == 0: return True else: return False (在本例中,nums是从1到10的整数列表) 但是,对于任何数字,它都返回true。我假设发生这种情况是因为它只检查1然后返回True,但是all()不应该在返回True之前检查列表中的每个元素吗 我对all()有点不熟悉
def factorall(x):
if all(x % num for num in nums) == 0:
return True
else:
return False
(在本例中,nums是从1到10的整数列表)
但是,对于任何数字,它都返回true。我假设发生这种情况是因为它只检查1然后返回True,但是all()不应该在返回True之前检查列表中的每个元素吗
我对all()有点不熟悉,所以我可能没有正确地实现它。有人能给我指出正确的方向吗
谢谢 您应该在
all
函数中进行比较,或者简单地将其删除,然后使用结果的求反x%num
:
def factorall(x):
if all(x % num == 0 for num in nums):
return True
else:
return False
def factorall(x):
return all(not x % num for num in nums)
return语句的工作原理与:
return all(x % num == 0 for num in nums)
我同意第二个似乎更清晰。您应该在
all
函数中进行比较,或者简单地删除它,然后使用结果的否定x%num
:
def factorall(x):
return all(not x % num for num in nums)
return语句的工作原理与:
return all(x % num == 0 for num in nums)
我同意第二个似乎更清楚。你应该使用
而不是任何
def factorall(x):
return not any(x%num for num in nums) #if any of these is a value other than 0
或者如果你想要它,就像你现在拥有它一样
def factorall(x):
return all(x%num==0 for num in nums)
您应该使用而不是任何,而不是全部
def factorall(x):
return not any(x%num for num in nums) #if any of these is a value other than 0
或者如果你想要它,就像你现在拥有它一样
def factorall(x):
return all(x%num==0 for num in nums)
不过,我有点不明白为什么我需要包括not。你能解释一下吗?抱歉,如果这是个愚蠢的问题。@RAF1940。抱歉搞混了。如果num
是x
的一个因子,x%num
将是0
。由于我们使用的是all()
函数,因此我们对因子执行not
,以使结果为真。如果所有数字都是因子,那么所有值都将是all()
@RAF1940中的True
。这类似于使用x%num==0
。如果num
是x
的一个因子,那么这两个变量都是True
,x%num==0
在这里比而不是x%num
更有意义。不过,在我看来,我有点不明白为什么需要包含not。你能解释一下吗?抱歉,如果这是个愚蠢的问题。@RAF1940。抱歉搞混了。如果num
是x
的一个因子,x%num
将是0
。由于我们使用的是all()
函数,因此我们对因子执行not
,以使结果为真。如果所有数字都是因子,那么所有值都将是all()
@RAF1940中的True
。这类似于使用x%num==0
。如果num
是x
的一个因子,那么这两个变量都将是True
,x%num==0
在这里比not x%num
在我看来更有意义,因为在all中没有0:(错过了all中没有0:(顺便说一句,如果foo:return True
如果foo
已经是一个布尔值,那么没有理由执行操作。你只是让代码变得更长(更难阅读和维护)。顺便说一句,如果foo:return True
否则:return False
当foo
已经是一个布尔值时,就没有理由执行。你只是让代码变得更长(更难阅读和维护).我想知道all
的任何用例是否可以用any
实现,如果是这样的话,它不是总是更好吗?Demorgan定律说是的,任何表达式都可以反转…但我不认为总是更好,这取决于你试图表达的内容。我想知道all
的任何用例是否可以用任何
如果是的话,它不总是更好吗?德摩根斯定律说是的,任何表达式都可以反转…但我不认为它总是更好,这取决于你试图表达什么