我知道当iterable的所有元素都为true时,内置all()
函数返回true。但是当我创建一个元组并给它2个随机整数作为元素时,它返回true。这是为什么?
例如:
tup = 1234 , 5678
并在其上调用all()
函数:
print ( all(t) )
>>> True
我很困惑,因为我认为python只能在执行布尔操作时返回true或false。
但我没有执行布尔操作,我只给了all()
2个整数。我没有说例如2>= 1
。为什么all()
为我的元组返回true?或者这只是默认答案?
答案 0 :(得分:4)
任何非零数字或非空序列的评估结果为True
。
In [1]: bool(123)
Out[1]: True
In [2]: bool(0)
Out[2]: False
In [3]: bool("0")
Out[3]: True
In [4]: bool("")
Out[4]: False
In [5]: bool([0])
Out[5]: True
In [6]: bool([])
Out[6]: False
等。这使您可以编写优雅,简洁的语句,如
if score:
而不是
if score != 0:
或
if sequence:
而不是
if len(sequence) > 0:
答案 1 :(得分:1)
1.def all(iterable):
2. for element in iterable:
3. if not element:
4. return False
5. return True
这是python中内置所有函数的定义。在你的情况下,第3行中的元素不能返回false。
答案 2 :(得分:1)
假设," Python只能在执行布尔运算时返回true或false"是不正确的。
Python库中定义的对象:None
,False
,0
,0L
,0.0
,0j
,{{1} },''
,()
,[]
被视为{}
。任何其他值(或对象,甚至类和函数)都被视为True。阅读:Truth Value Testing
因此,以下两个都是False
:
True
all(single_parameter_iterator)是Python中的一个方法,如果迭代器的所有值都传递给它,则返回true。 阅读:all() method in Python
什么是迭代器?
tup = 1234 , 5678
if(tup):
print 'True'
>> True
def a_func():
print 'This is a function'
if(a_func):
print 'True'
>> True
来循环列表。for statement
一起使用,则会循环播放其字符。string
一起使用,则会在其键上循环。dictionary
一起使用,它会循环遍历文件的行。你自己已经给出了答案:
"我知道内置函数all()在所有时都返回true 可迭代的元素是真的。"