← Все вопросы

TypeError: 'int' object is not subscriptable — что значит и почему?

Задан 18 месяцев назад653 просмотров1 ответ
8

Пытаюсь взять элемент по индексу, пишу x[0], а Python отвечает TypeError: 'int' object is not subscriptable. Что вообще такое «not subscriptable» и почему он считает мою переменную числом?

1 ответ

11
✓ Принятый ответ — помог автору

«Subscriptable» — это «к нему можно применить квадратные скобки [...]». Ошибка 'int' object is not subscriptable значит: вы пишете x[i], но x — это число, а у числа нет элементов по индексу.

Пример:

x = 100
print(x[0])   # TypeError: 'int' object is not subscriptable

Частые причины:

  1. Перепутали переменную: думали, что там список, а там число.
  2. Случайно переназначили имя. Например, был список nums, а потом написали nums = len(nums) — теперь nums это число, и nums[0] падает.
  3. Хотели обратиться к элементу, а на самом деле там результат вычисления.

Исправление зависит от намерения. Если нужен элемент списка — убедитесь, что переменная действительно список:

x = [10, 20, 30]
print(x[0])   # 10

То же сообщение бывает с 'float', 'bool', 'NoneType' — смысл одинаковый: к скобкам [] применили объект, который их не поддерживает. Проверьте через print(type(x)), что лежит в переменной.

Ваш ответ

, чтобы ответить на вопрос.