![](/img/trans.png)
[英]Get length of a (non infinite) iterator inside it's loop using Python 2.7
[英]Python 2.7: Determining the length when using next with a python Iterator
我正在執行以下提取,並且正在運行:
>>> lines = ["cat 23\n", "dog 11\n"]
>>> "".join(lines).split()
['cat', '23', 'dog', '11']
>>> data = iter("".join(lines).split())
>>> [(next(data), next(data)) for i in range(2)]
[('cat', '23'), ('dog', '11')]
但是,如果我將行更改為等於:
lines = ["cat 23\n"]
我得到一個StopIteration,但未生成任何列表。
編輯:與下面的答復一樣,答案是因為我使用2而不是1。是否有一種方法可以獲取迭代器的長度而不消耗它?
列表理解基本上是:
l = list()
l.append((next(data), next(data)))
l.append((next(data), next(data)))
您正在迭代器上調用四次next(data)
,該迭代器顯然僅提供兩個元素。
您在迭代時指定了兩對,以使其應該反映行列表:
size = len("".join(lines).split()) # size of list
[(next(data), next(data)) for i in range(size / 2)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.