Python問題7:python3中的range()函數(shù)返回的是列表嗎
2022-11-11 19:25 作者:夏老師學(xué)習(xí)谷 | 我要投稿
python3中的range()函數(shù)返回的是列表嗎?
注意,這里說的Python3里面的range()函數(shù),和Python2是不同的,返回的不是列表,是可迭代對(duì)象。
在python3中,如果執(zhí)行下面的語句
?得到結(jié)果是:
?得到結(jié)果是range(0,10) ,而不是期望的[0,1,2,3,4,5,6,7,8,9]。但是如果換一種方式
得到的結(jié)果卻是
那為什么會(huì)這樣呢?其實(shí)在Python3中range()函數(shù)返回的對(duì)象很像一個(gè)列表,但是它確實(shí)不是一個(gè)列表,它只是在迭代的情況下返回指定索引的值,它并不會(huì)在內(nèi)存中產(chǎn)生一個(gè)列表對(duì)象,官方解釋說這樣做是為了節(jié)約內(nèi)存空間。通常我們稱這種對(duì)象是可迭代的,或者是可迭代對(duì)象。
這里就要引入另外一個(gè)叫迭代器的概念,迭代器可以從一個(gè)可迭代對(duì)象中連續(xù)獲取指定索引的值,直到索引結(jié)束。比如list()函數(shù),所以在上面的例子中,我們可以用list()這個(gè)迭代器將range()函數(shù)返回的對(duì)象變成一個(gè)列表。
由此可以看出:range()函數(shù)返回的是一個(gè)可迭代對(duì)象(類型是對(duì)象),而不是列表類型;list() 函數(shù)是對(duì)象迭代器,把對(duì)象轉(zhuǎn)為一個(gè)列表,返回的變量類型為列表。
標(biāo)簽: