Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尝试检查整数列表中每个元素的条件_Python - Fatal编程技术网

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
的任何用例是否可以用任何
如果是的话,它不总是更好吗?德摩根斯定律说是的,任何表达式都可以反转…但我不认为它总是更好,这取决于你试图表达什么