Проверить кортеж на пустой элемент
Mожно ли как-то проверить кортеж на пустой элемент?
Например есть кортеж a = (1,), у которого нет второго элемента. Как можно его проверить?
Ответы (1 шт):
Как вам уже написали в комментариях, (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