Python не подлежит подписке

Что означает unsubscriptable в контексте TypeError, как в:

TypeError: 'int' object is unsubscriptable

EDIT: Пример короткого кода, который приводит к этим явлениям.

a=[[1,2],[5,3],5,[5,6],[2,2]]
for b in a:
    print b[0]

> 1
> 5
> TypeError: 'int' object is unsubscriptable

Ответы

Ответ 1

Это означает, что вы пытались обрабатывать целое число как массив. Например:

a = 1337
b = [1,3,3,7]
print b[0] # prints 1
print a[0] # raises your exception

Ответ 2

Проблема в вашем примере кода заключается в том, что массив "a" содержит два разных типа: он имеет 4 списков из 2 элементов и одно целое. Затем вы пытаетесь подчинить script каждый элемент в "a", включая целочисленный элемент.

Другими словами, ваш код эффективно выполняет:

print [1,2][0]
print [5,3][0]
print 5[0]
print [5,6][0]
print [2,2][0]

Эта средняя строка, где он делает "5 [0]", является тем, что порождает ошибку.

Ответ 3

Вы пытаетесь найти индекс массива int:

>>> 1[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is unsubscriptable

То есть квадратные скобки [] являются индексом. Если вы попытаетесь применить оператор индекса к объекту, который его не поддерживает (например, не реализует __getitem__()).