获取PyTables行迭代器中元素数量的最佳方法是什么?

时间:2014-06-02 21:17:16

标签: python iterator pytables

我目前的做法是:

rowiter = atable.where(condition)
rowiter_length = max([i for i, row in enumerate(rowiter)])

有没有办法在没有遍历整个迭代器的情况下获得rowiter的长度?

1 个答案:

答案 0 :(得分:1)

不确定是否有更有效的方法,但你应该真正使用len(rowiter)而不是那个列表comp,原因有两个:

  1. 如果迭代器对象具有更有效的计算长度的方法,它很可能通过__len__特殊方法使其可访问,因此如果可用,您将获得加速。
  2. enumerate从索引0开始,因此您的构造将返回比迭代器的实际长度少1的内容。