python迭代器, torchtext

在写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就是增加了一个计数器 同时循环

你可能感兴趣的:(python迭代器, torchtext)