Python TypeError list indices must be integers or slices, not list
Иногда при написании программ (скриптов) на языке Питон (Python) может возникнуть ошибка: Python TypeError list indices must be integers or slices, not list. Что делать и как быть? Как исправить (пофиксить) эту ошибку быстро и просто?
Давайте разбираться. Представим ситуацию, что написали программу на языке python, запускаем её, а компилятор ругается на ошибку TypeError list indices must be integers or slices, not list. В самом сообщении содержится подсказка, попробуем понять, в чем проблема, и как её можно исправить.
Если перевести дословно, то получим «Индексы списка должны быть целыми числами или срезами, а не списком».
Рассмотрим такой пример, вот мы написали простенькую программу на python'e:
a = ['1']
b = []
print(a[b])
При попытке запустить программу валится эта самая ошибка TypeError list indices must be integers or slices, not list.
В данном случае мы попытались обратиться по индексу, но индекс у нас является списком. Т.е. нам компилятор и подсказывает, что индекс списка должен быть целым числом или срезом. Скорее всего, если бы мы писали более сложный код, мы бы где-то присвоили значение переменной b таким образом, что b стал бы списком, а потом попытались обратиться по индексу b (а он уже список), отсюда бы и возникла наша ошибка TypeError list indices must be integers or slices, not list.
Давайте исправим ситуацию:
a = ['1']
b = 0
print(a[b])
Теперь индекс у нас типа integer, поэтому ошибки не возникнет.
Надеемся, теперь у вас тоже не возникнет ошибки TypeError list indices must be integers or slices, not list, а если и возникнет, мы теперь знаем, что делать.