【发布时间】:2014-04-02 00:02:25
【问题描述】:
有时,DB 会返回空元组列表,例如 [(), (), ()]。我需要为这种类型的返回设置False。这是我的工作:
说:
a = [(), (), ()]
b = all([bool(i) for i in a])
print b
False
有没有更好的办法?
【问题讨论】:
-
你做错了。当您使用
all时,即使只有一个元组为空,您也会得到False。
有时,DB 会返回空元组列表,例如 [(), (), ()]。我需要为这种类型的返回设置False。这是我的工作:
说:
a = [(), (), ()]
b = all([bool(i) for i in a])
print b
False
有没有更好的办法?
【问题讨论】:
all 时,即使只有一个元组为空,您也会得到False。
使用any() 检查是否有非空的。
any([(), (), ()])
【讨论】:
其实你想用any,而不是all:
>>> a = [(), (), ()]
>>> b = all(a)
>>> print b
False
>>>
>>> a = [(), (1,), ()]
>>> b = all(a)
>>> print b
False
>>>
>>> a = [(), (), ()]
>>> b = any(a)
>>> print b
False
>>>
>>> a = [(), (1,), ()]
>>> b = any(a)
>>> print b
True
>>>
请注意,all 将返回 False,除非每个元素都是“真实的”。
您根本不需要使用bool。
【讨论】: