Python рассматривает цифру и число с плавающей точкой как тот же индекс в списке

Я пытаюсь найти значение индекса списка снизу кода.

a = [4.5, 6 , "hi" , 6.0]
for b in a:
    if type(b)==float:
        print(a.index(float(b))+0, b , id(b))
    else:
        print(a.index(b)+0 , b , id(b))

то, что я нашел для значения «6» и «6,0» занимает ту же позицию индекса из вывода. Как получить разные значения индекса для каждого значения в списке.

Всего 1 ответ


Функция list.index не написана для различения типов. Если вы хотите этого, вам придется написать свою собственную функцию. Использование перечисления в вашем цикле даст реальный индекс.

a = [4.5, 6 , "hi" , 6.0]
for idx, b in enumerate(a):
    if type(b)==float:
        print(idx, b , id(b))
    else:
        print(idx , b , id(b))

Вы можете обернуть этот код в функцию, чтобы создать новую чувствительную к типу индексную функцию, которая возвращает только idx .


Есть идеи?

10000