我在很多文章/資料中看到xrange(num)是一個生成器/迭代器。我有幾個關於這方面的問題。<type'generator'>和<type'xrange'之間的差異
- 我想知道的類型「x範圍」並鍵入「發電機」
之間的確切區別,如果x範圍是一個迭代器/發電機,它應該具有的.next()方法。我不明白爲什麼.next()方法不適用於下面的情況。
def generator(): for i in xrange(20): yield i
在上述例子中,
numbers = generator() for i in numbers: if i == 6: break for i in numbers: if i == 10: break print i >>> 7 8 9 >>> print numbers.next() 11
上述功能也保持爲真對的類型的對象生成:
>>> numbers = (x for x in range(100))
如果我做的xrange操作中,在循環開始從頭開始迭代,沒有next()操作。我知道,我們可以做的聰明的辦法:
for i in xrange(20): if (#something): var = i break #perform some operations for i in range(var,20): #Do something
但我想循環VAR後繼續不使用VAR。
簡而言之,xrange是否有next()類型的操作。如果是的話:'怎麼樣?' ,否則:'爲什麼?'
不,因爲它是可迭代的,而不是迭代器。你可以迭代多次。你可以使用'numbers = iter(xrange(20))'來獲得該行爲。 – Ryan
「我在很多帖子/資料中看到xrange(num)是一個生成器/迭代器。」 - 這些帖子是錯誤的。人們只是不斷說出來,因爲他們不知道他們在說什麼,並且因爲他們喋喋不休地從他人那裏聽到了錯誤的事情。 – user2357112