2013-11-10 5 views
0

Как я могу выполнить проверку, возвращающую значение true, если кортеж в кортеле кортежей пуст?Установить пустой кортеж в кортеже кортежей

Например, возвращение True в этом случае:

(('t2',), ('t3',), ('t4',), ('t5','t6')) 

возвращение False в этом случае:

(('t2',),(), ('t3',), ('t4',)) 

Пожалуйста, дайте свой ответ так, что оно справедливо для Python3.

ответ

4

Вы можете использовать встроенную в all функции как пустой кортеж является falsey в Python:

Help on built-in function all in module builtins: 

all(...) 
    all(iterable) -> bool 

    Return True if bool(x) is True for all values x in the iterable. 
    If the iterable is empty, return True. 



>>> all((('t2',), ('t3',), ('t4',), ('t5', 't6'))) 
True 
>>> all((('t2',),(), ('t3',), ('t4',))) 
False 
2

Противоположности «не кортежа в кортеже кортежей пусто» является «некоторым набором ... есть пустой "; эквивалентно, «пустой кортеж можно найти в кортеже кортежей».

Это, естественно, приводит к столь же простой (и, я думаю, немного более удобным для чтения), но совсем другое решение:

>>>() not in (('t2',), ('t3',), ('t4',), ('t5', 't6')) 
True 
>>>() not in (('t2',),(), ('t3',), ('t4',)) 
False 
Смежные вопросы