問題の概要と質問
列挙することはできても、インデックスを作成できないオブジェクト内のデータを調べようとしています。私はまだpythonの初心者ですが、これがどのようにして可能になるのかわかりません。
それを列挙できる場合、なぜ列挙と同じ方法でインデックスにアクセスできないのですか?そうでない場合、アイテムに個別にアクセスする方法はありますか?
実際の例
import tensorflow_datasets as tfds
train_validation_split = tfds.Split.TRAIN.subsplit([6, 4])
(train_data, validation_data), test_data = tfds.load(
name="imdb_reviews",
split=(train_validation_split, tfds.Split.TEST),
as_supervised=True)
データセットのサブセットを選択します
foo = train_data.take(5)
私ができる反復処理foo
列挙して:
[In] for i, x in enumerate(foo):
print(i)
期待される出力を生成します:
0
1
2
3
4
しかし、それにインデックスを付けようとするfoo[0]
と、次のエラーが発生します。
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-44-2acbea6d9862> in <module>
----> 1 foo[0]
TypeError: 'TakeDataset' object does not support indexing
1
enumerateはインデックスにアクセスしないためです。Pythonには「列挙可能」という概念はなく、単に反復可能です
—
juanpa.arrivillaga '30