1樓:王濤
for i in ([iter(a)] * 3):
print(i)
這列印的是3個迭代器物件,引用型別,位址相同。
for i in ([iter(a)]*3):
print(list(i))
迭代器自身包含狀態,第一次列印後狀態已更新,故後面列印為空列表。可見Effectvie python中關於迭代器的描述。
2樓:曠修
這個問題涉及到幾個知識點:
1. iter() 方法用於返回乙個迭代器,它能將所有可迭代物件轉化成迭代器
2. 迭代器只能迭代一次
3. 可迭代物件和迭代器物件的區別
這個問題是乙個很好的例子,基本上把迭代器這塊的內容都包含進來了。如果把這個問題弄明白,迭代器這塊也就算是懂了。
從問題中可以看出建立的三個迭代器實際上指向的是同乙個物件(id 相同),也就是說他們是乙個同一物件。第一次迭代的時候會有資料,但第一迭代完就不能再迭代了,所以後邊的兩次迭代都是空的。
要詳細了解這一塊的內容可以參考:
對 Python 迭代的深入研究
Python 迭代器、生成器和列表解析
什麼是工廠函式?Python 中工廠函式怎麼理解?
lalaland python class mq object def init self,string c self.config str string cdef print str self print self.config str def crete factory method confi...
在python中的randrange函式和uniform函式的區別是什麼?
無關風月 函式簽名說的已經比較清楚了啊 In 7 random.randrange?Signature random.randrange start,stop None,step 1,int maxwidth 9007199254740992L Docstring Choose a random i...
Python中reshape函式引數 1的意思?
西紅柿雞蛋湯 首先要明白shape的含義,shape代表了乙個矩陣的行和列。比如這個矩陣,m np.array 1,2 3 5,6,7 m.shape 它的shape是 3,2 reshape就是對矩陣的shape重新排列。比如m.reshape 3,2 1 2 3 5 6 7 我們就將矩陣重新排列...