2014-01-22 45 views
3

我希望遍歷list_iterator兩次。當我現在嘗試這樣做時,迭代器沒有第二次迭代。我可以重置嗎?遍歷list_iterator兩次

l = iter(["1","2","3","4"]) 

for i in l: 
    print(i) 

for i in l: 
    print(i) 

一個list_iter對象正在傳遞給我希望迭代兩次的函數。傳遞list_iterator對象是否不合適?

+1

最好是通過列表本身,無需創建一個迭代器。 –

+1

迭代器是「使用並拋出」類型的對象 – thefourtheye

+0

「傳遞list_iterator對象是否不合適?」 - 我的經驗是,它可能會導致一些混淆,以傳遞只能迭代一次的事情(即使生成器和文件對象對接收者來說也不一定是顯而易見的)。函數需要記錄它們的輸入是否需要多次迭代,以及它們的輸出是否可以迭代多次。預計,例如任何帶有yield的函數都會返回一次只能迭代一次的內容。你只需要確保你知道它發生的時間。 –

回答

2

你總是可以使用itertools.tee得到copies的迭代。

阿拉

l = iter(["1","2","3","4"]) 
# Don't use original.... 
original, new = tee(l)