web-dev-qa-db-ja.com

Python添え字なし

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
25
Theodor

これは、整数を配列として処理しようとしたことを意味します。例えば:

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

サンプルコードの問題は、配列 "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]」を実行する中央の行がエラーを生成しています。

13

あなたはintの配列添え字を検索しようとしています:

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

つまり、角括弧_[]_は添え字演算子です。添字演算子をサポートしていないオブジェクトに適用しようとした場合(__getitem__()を実装していないなど)。

9
camh