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、より一般的には、呼び出し可能なイテレータの長さを取得して、解析する前に結果があったかどうかを知る方法です。

4

1 に答える 1

7

長さを取得するには、iterableをリストに変換する必要があります。

len(list(a))

これは反復可能オブジェクトを消費するため、再度反復処理できない場合があることに注意してください。リスト内のすべての要素を引き続き再利用できるようにするには、list(a)結果を呼び出す前に中間に保存します。len()

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