在写torchtext的迭代器时发现两种迭代方法
1. batch = next(iter(train_iter))
print(batch.label)
print(batch.text)
2. for batch in train_iter:
print(batch.label)
print(batch.text)
但直接调用batch = next(train_iter)会报错
原因在于要区分iterable和iterator
iterable是一个对象 实现了__iter__方法 __iter__方法会返回一个iterator 可以用for loop的方式进行迭代
而iterator实现了next()函数
也就意味着可以用这样的写法
batch = next(train_iter.__iter())
//另外在这儿记录一下enumerate的用法
for i, data in enumerate(list[]):
enumerate就是增加了一个计数器 同时循环