Как использовать type(i.isdigit()) в сочетании с If или While true?

По условию задачи в строке 'ab7h5m0kl98' необходимо определить все индексы цифр. Пытаюсь использовать следующие виды кода:

    #Вариант 1
    n='ab7h5m0kl98'
    for x,y in enumerate(n):
            while True:
                 type(y.isdigit())
    print(x)

    #Вариант 2
    n='ab7h5m0kl98'
    a=[x for x,y in enumerate(n)]: if type(y.isdigit())]
    print(a)

Однако терплю неуспех. Знаю что можно использовать третий, рабочий вариант, но он мне не нравится:

    #Вариант 3
    n='ab5dg6v89dgf954'
    n=[i for i, c in enumerate(n) if c >= '0' and c <= '9']
    print(n)

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

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

Вам не нужен type, он тут вообще не понятно зачем. И while True тоже непонятно зачем вы хотите сюда впихнуть. while True нужен для бесконечного цикла.

вариант с циклом:

n = 'ab7h5m0kl98'
for x, y in enumerate(n):
    if y.isdigit():
        print(x)

вариант со списковым включением:

n = 'ab7h5m0kl98'
a = [x for x, y in enumerate(n) if y.isdigit()]
print(a)
→ Ссылка