簡體   English   中英

python中range()函數的返回值是多少?

[英]What is the return value of the range() function in python?

我認為range()函數返回一個列表,其中包含您放在括號內的參數。 但是當我在IDLE中鍵入range(4)時,我得到range(0, 4)作為輸出。 類似地,當我輸入print(range(4)) ,我也得到range(0, 4)作為輸出。 我目前正在使用python 3.5。

我目前正在使用以下電子書學習python:“如何像計算機科學家一樣思考”,在該電子書中,它們提供了可以運行python代碼的活動代碼塊。 當我在那里運行print(range(4))時,我確實得到了我期望的列表,即[0, 1, 2, 3]

誰可以給我解釋一下這個?

提前致謝!

您正在閱讀的書可能使用Python 2,其中range返回一個列表。

在Python 3中, range返回一個不可變的序列類型

你的書可能是用Python 2.x編寫的。 在Python 2.x中,range函數實際上返回了for循環將遍歷的列表。 在Python 3.x中,范圍函數是它自己的類型,並且實際上是一個生成器函數,因此當for循環執行時,數字會立即生成。

如果將其傳遞到類似的列表中,您仍然可以從范圍函數創建列表。

list(range(4))

哪個會輸出包含以下內容的列表。

[0,1,2,3]

range(a, b)返回類range的實例。 您可以通過print(type(range(1, 5)))檢查print(type(range(1, 5)))

你期望的是print(list(range(a, b)))

根據這個

所以在Python 3.x中,range()函數有自己的類型。 在基本術語中,如果你想在for循環中使用range(),那么你很高興。 但是,您不能將其純粹用作列表對象。 例如,您無法切割范圍類型。

但是如果在其上調用print()print函數將嘗試創建range-object的字符串表示形式,並且此字符串表示形式等同於列表的字符串表示形式。

如果你想要列表你可以做list(range(<parameters>))

print(range(10))返回范圍(0,10)作為輸出

在許多方面,range()返回的對象表現得好像它是一個列表,但事實上並非如此。 它是一個對象,當您迭代它時返回所需序列的連續項,但它並不真正使列表,從而節省空間。

我們說這樣的對象是可迭代的,也就是說,適合作為函數和構造的目標,這些函數和構造期望在供應耗盡之前可以獲得連續項目的東西。 我們已經看到for語句就是這樣一個迭代器。 函數列表()是另一個; 它從iterables創建列表:

list(range(5))返回[0,1,2,3,4]作為輸出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM