[英]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.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.