它的功能可以看这个
在这里需要注意一点,当通过for循环遍历时,遍历会在某一iter遍历到头后停止,也就是当其中一个iter的元素数量小于另一个,那么元素多的iter的剩余元素不会被遍历。
这个主要是我在看faster-rcnn源码时看到的,觉得很不错。其中的代码如下:
for iter_ in (
pred_bboxes, pred_labels, pred_scores,
gt_bboxes, gt_labels, gt_difficults):
if next(iter_, None) is not None:
raise ValueError('Length of input iterables need to be same.')
这里的pred_bboxes, pred_labels, pred_scores, gt_bboxes, gt_labels, gt_difficults都是迭代器,整个代码的意思是:上面的 six.moves.zip(上面代码之前的语句,很长所以没写)遍历会在某一iter遍历到头后停止,由于pred_bboxes等是全局iter对象,我们此时继续调用next取下一数据,如果有任一数据不为None,那么说明他们的len是不相等的 有悖常理,数据错误