1

假设我有以下代码:

>>> a = re.finditer("(?P<char>\w)","hello world")
>>> for i in a:
    print i.groupdict()


{'char': 'h'}
{'char': 'e'}
{'char': 'l'}
{'char': 'l'}
{'char': 'o'}
{'char': 'w'}
{'char': 'o'}
{'char': 'r'}
{'char': 'l'}
{'char': 'd'}

如您所见,有结果,一切都很棒!但是,我希望能够知道len(a)我会这样做:

>>> len(a)
Traceback (most recent call last):
  File "<pyshell#79>", line 1, in <module>
    len(a)
TypeError: object of type 'callable-iterator' has no len()

我的问题是,我如何获得 的长度a,或者更一般地说,如何获得 callable-iterator 的长度,以便在解析它们之前知道是否有任何结果。

4

1 回答 1

7

您需要将 iterable 转换为列表以获取长度:

len(list(a))

请注意,这会消耗可迭代对象,因此您可能无法再次对其进行迭代。在调用它之前将结果存储list(a)在中介len()中,以便能够重用列表中的所有元素:

a = list(a)
len(a) 
于 2012-09-10T12:15:23.403 回答