Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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,我是Python新手,一直在玩它,直到我遇到任何函数的问题。根据Python库,它的代码是: def any(iterable): for element in iterable: if element: return True return False 我创建了一个列表:list=[-1,1],我希望: print any(list) < 0 print any(x < 0 for x in list) 为什么第一句话是假

我是Python新手,一直在玩它,直到我遇到任何函数的问题。根据Python库,它的代码是:

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False
我创建了一个列表:list=[-1,1],我希望:

print any(list) < 0
print any(x < 0 for x in list)
为什么第一句话是假的?它与第二个有什么不同?

如文档中所述,anylist返回一个布尔值。您正在将该布尔值与整数0进行比较:

anylist仅基于列表的内容返回布尔值。-1和1都是真值-它们不是数字0,因此任何值都返回真值:

Python中的布尔值是int的一个子类,其中True==1和False==0,因此True不小于0:

>>> True < 0
False
因此,any在遇到所生成序列中的第二个值时立即返回True


注意:应该避免使用list作为变量名,因为它会屏蔽内置类型。我在回答中使用了lst,因此,我可以使用list callable来说明生成器表达式生成的内容。

是什么让您认为对于list中的x,anylist<0将等同于anyx<0?anylist<0是不等效的。`还要避免使用list作为变量名您应该避免使用list作为变量名,因为这会掩盖内置类型。我在回答中使用了lst,这样我就可以使用可调用列表来说明生成器表达式产生了什么。非常感谢。我没有意识到它返回一个布尔值。我想它会为列表中的所有元素计算条件列表[element]<0。谢谢。你的回答很清楚。我认为在第一种情况下,anytakes@syj:Python在函数调用方面非常简单;外面的东西。。不适用于呼叫..:-
>>> any(list)
True
>>> True < 0
False
>>> lst = [1, -1]
>>> any(lst)
True
>>> True < 0
False
>>> (x < 0 for x in lst)
<generator object <genexpr> at 0x1077769d8>
>>> list(x < 0 for x in lst)
[False, True]