關於Python中iter 函式的一點疑問

時間 2021-06-02 07:13:38

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 我們就將矩陣重新排列...