假设我有以下代码:
>>> 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
的长度,或者更一般地说,我如何获得可调用迭代器的长度,以便在解析它们之前我可以知道是否有任何结果。
答案 0 :(得分:4)
您需要将iterable转换为列表以获取长度:
len(list(a))
请注意,此消耗可迭代的内容,因此您可能无法再次迭代它。将list(a)
结果存储在中介中,然后在其上调用len()
,以便能够重复使用列表中的所有元素:
a = list(a)
len(a)