python3中的range函數返回的是列表嗎?


注意,這里說的Python3里面的range函數,和Python2是不同的,返回的不是列表,是可迭代對象

在python3中,如果執行下面的語句

print(range(10))

  

得到結果是 range(0,10) ,而不是期望的[0,1,2,3,4,5,6,7,8,9]。但是如果換一種方式

print(list(range(10)))

  

得到的結果卻是

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

  

那為什么會這樣呢?其實在Python3中range()函數返回的對象很像一個列表,但是它確實不是一個列表,它只是在迭代的情況下返回指定索引的值,它並不會在內存中產生一個列表對象,官方解釋說這樣做是為了節約內存空間。通常我們稱這種對象是可迭代的,或者是可迭代對象。

這里就要引入另外一個叫迭代器的概念,迭代器可以從一個可迭代對象中連續獲取指定索引的值,直到索引結束。比如list()函數,所以在上面的例子中,我們可以用list()這個迭代器將range()函數返回的對象變成一個列表。

由此可以看出:range()函數返回的是一個可迭代對象(類型是對象),而不是列表類型;list() 函數是對象迭代器,把對象轉為一個列表,返回的變量類型為列表。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM