python - 对象是可枚举的但不可索引?

标签 python tensorflow neural-network kaggle

问题总结和疑问

我正在尝试查看对象内的一些数据,这些数据可以枚举但不能索引。我对 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

最佳答案

只有类具有相应的方法时,Python 才允许执行这些操作:

任何类都可以定义一个类而不定义另一个类。如果效率低下,通常不定义 __getattr__

<小时/>

1 __next__ 对于 __iter__ 返回的类是必需的。

关于python - 对象是可枚举的但不可索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59525014/

相关文章:

machine-learning - 在优化器步骤之前调整损失

python - 连接时间序列神经网络和前馈神经网络

machine-learning - 什么样的神经网络适合纸牌游戏?

c++ - 使用 FANN 库

python - PyQt Paint 自定义日期格式

python - 在Python中导入包

python - Python 2.5 .pyc 文件是否与 Python 2.6 .pyc 文件兼容?

python - 输入 ID 时打印行的用户定义函数

python - 如何将 python 列表输入 Tensorflow

python - 急切执行 : Could not find valid device for node. {{node Conv2D}}