Python 3.2.3,使用Idle和Python Shellt = (1,2,3)t2 = (5,6,7)z = zip(t,t2)for x in z : print(x)結果:(1,5)(2,6)(3,7)緊接著放置完全相同的循環代碼以再次在for循環中顯示z(在上面和下一部分之間不執行任何操作):for x in z : print(x)結果:(空白,無結果)z仍然存在,因為z結果是<zip object at 0xa8d48ec>我什至可以重新分配要重新壓縮的t,t2,但隨后它只能工作一次,并且只能一次又一次地工作。這是應該如何工作的嗎?在文檔http://docs.python.org/3.2/library/functions.html#zip中沒有提及此內容。
3 回答

有只小跳蛙
TA貢獻1824條經驗 獲得超8個贊
這就是在python 3.x中的工作方式。在python2.x中,zip返回一個元組列表,但對于python3.x,zip其itertools.izip行為與python2.x中的行為相同。要恢復python2.x的行為,只需從zip的輸出構造一個列表:
z = list(zip(t,t2))
請注意,在python3.x,大量的內置函數現在返回迭代器而不是列表(map,zip,filter)
添加回答
舉報
0/150
提交
取消