TypeErrorのコンテキストでのunsubscriptable
の意味は次のとおりです。
TypeError: 'int' object is unsubscriptable
編集:この現象を引き起こす短いコード例。
a=[[1,2],[5,3],5,[5,6],[2,2]]
for b in a:
print b[0]
> 1
> 5
> TypeError: 'int' object is unsubscriptable
これは、整数を配列として処理しようとしたことを意味します。例えば:
a = 1337
b = [1,3,3,7]
print b[0] # prints 1
print a[0] # raises your exception
サンプルコードの問題は、配列 "a"に2つの異なる型が含まれていることです。4つの2要素リストと1つの整数があります。次に、整数要素を含む「a」のすべての要素に添え字を付けようとしています。
言い換えれば、あなたのコードは効果的にやっています:
print [1,2][0]
print [5,3][0]
print 5[0]
print [5,6][0]
print [2,2][0]
「5 [0]」を実行する中央の行がエラーを生成しています。
あなたはintの配列添え字を検索しようとしています:
_>>> 1[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is unsubscriptable
_
つまり、角括弧_[]
_は添え字演算子です。添字演算子をサポートしていないオブジェクトに適用しようとした場合(__getitem__()
を実装していないなど)。