Python: количество элементов в кортеже - PullRequest
1 голос
/ 25 марта 2019

У меня есть такой кортеж:

('path1', 'path2', ('orig1', 'patch1'), ('orig2', 'patch2'))

Я хочу посчитать количество предметов

Итак, когда я запускаю это:

for item in tpl:
    print(item)
    num = len(item)
    print(num)

Я получаю:

path1
5
path2
5
('orig1', 'patch1')
2
('orig2', 'patch2')
2

Мое ожидание:

path1
1
path2
1
('orig1', 'patch1')
2
('orig2', 'patch2')
2

Примечания:

Совсем новый Python, возможно, я совершенно неверно к этому отношусь.

1 Ответ

0 голосов
/ 25 марта 2019

Используйте isinstance, чтобы проверить, что это за объект.В настоящее время вы используете len() на string

Пример:

tpl = ('path1', 'path2', ('orig1', 'patch1'), ('orig2', 'patch2'))

for item in tpl:
    print(item)
    if isinstance(item, tuple):
        num = len(item)
    else:
        num = 1
    print(num)

Выход:

path1
1
path2
1
('orig1', 'patch1')
2
('orig2', 'patch2')
2
...