0
guys!Python:list(filter object)清空對象
我使用Python 3.6.1,鑽進一個有趣的問題:
我用一個簡單的itertools.filter()來獲取從items
列表子列表,然後我就打印了兩次。
items = [1,2,3,4,5]
operateVersions = filter(lambda t: t, items)
print ("1: %s" % list(operateVersions))
print ("2: %s" % list(operateVersions))
結果是怪異:
1: [1, 2, 3, 4, 5]
2: []
所以,當我運行list(operateVersions)
它在某種程度上改寫operateVersions
過濾對象,而不是僅僅返回列表解釋
它是一個正常的行爲嗎?它不尋找我它是
你使用'itertools.filter'嗎?據我所知,它不存在於python3.x(至少,它不存在於我的機器上安裝的python3.5上)。 – mgilson
非常相關:https://stackoverflow.com/q/12319025/748858 - 具體來說,如果您想迭代迭代器多次,您需要將列表存儲在'operateVersions'而不是迭代器中。 – mgilson
@mgilson或者在這種情況下,每次直接將過濾器應用於「items」... –