Что ж, если вы хотите быть в безопасности и печатать первый элемент итерируемого, вы можете применять индексы, hasattr
проверяет, есть ли у объекта Python определенный метод, где __getitem__
является эквивалентом функции слайса:
l = [(1,2,3),[4,5],6]
for i in l:
if hasattr(i, '__getitem__'):
print(i[0])
else:
print(i)
>> 1
4
6
Это гарантирует, что вы всегда можете выбрать индекс из последовательности, учитывая типы list
или tuples
.Обратите внимание, что тип str
также является последовательностью, которая является итеративной.Если вы хотите исключить их, вы можете использовать isinstance
для проверки типа объекта, в этом примере мы проверяем not str
и is Iterable
:
import collections
for i in l:
if not isinstance(i, str) and isinstance(i, collections.Iterable):
print(i[0])
else:
print(i)