簡體   English   中英

Python 2.7:確定將next與python迭代器一起使用時的長度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM