Проверить кортеж на пустой элемент

Mожно ли как-то проверить кортеж на пустой элемент?

Например есть кортеж a = (1,), у которого нет второго элемента. Как можно его проверить?


Ответы (1 шт):

Автор решения: MaxU

Как вам уже написали в комментариях, (1,) - кортеж, состоящий из одного элемента, поэтому чтобы проверить второй элемент вам понадобится дополнительная проверка на длину кортежа:

if len(a) > 1 and a[1] is not None:
    # ...

PS в Python невозможно создать кортеж из единственного элемента, не указав после него запятую. Это плата за использование обычных скобок, которые также используются для явного указания приоритета операций.

Пример кортежа:

In [1]: a = (1,)

In [2]: len(a)
Out[2]: 1

In [3]: type(a)
Out[3]: tuple

Если мы попытаемся сделать тоже самое, но без запятой, то мы получим скалярное значение вместо кортежа:

In [4]: b = (1)

In [5]: type(b)
Out[5]: int       #  <--- NOTE !!!

In [6]: tuple(1)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-69b6b14cc30a> in <module>
----> 1 tuple(1)

TypeError: 'int' object is not iterable

Со списками и множествами указывать запятую после единственного элемента не нужно:

In [10]: l = [1]

In [11]: type(l)
Out[11]: list

In [12]: len(l)
Out[12]: 1

In [13]: s = {1}

In [14]: type(s)
Out[14]: set

In [15]: len(s)
Out[15]: 1
→ Ссылка