Python中range()和xrange()函式的區別?


Python中的range()方法用於返回一個序列物件。它用於Python 3.x。xrange()用於生成數字序列,用於Python 2.x。因此,Python 3.x中沒有xrange()。

讓我們首先分別瞭解range()和xrange()。

Python中的range()方法

range()方法返回一個數字序列,並具有3個引數:start、stop和step。語法如下:

range(start, stop, step)

這裡:

  • start − 指定起始位置的整數。

  • stop − 指定結束位置的整數。(不包含stop)

  • step − 指定增量,即跳過的步數。

使用range()建立數字序列

示例

我們將在這裡使用range()方法建立一個序列:

# Using the range() to get sequence of numbers # Defines start and stop parameters a = range(2, 8) for n in a: print(n)

輸出

2
3
4
5
6
7

使用range()建立數字序列並設定步長

示例

我們將在這裡使用range()方法建立一個序列,並將設定跳過步長:

# Using the range() to get sequence of numbers # Defined start, stop and step parameters a = range(2, 10, 3) for n in a: print(n)

輸出

2
5
8

使用range()建立序列並獲取物件的大小

示例

getsizeof()方法用於獲取給定物件以位元組為單位的大小:

import sys # Using the range() to get sequence of numbers # Defined start and stop parameters a = range(2, 5) for n in a: print(n) # Get the size print("Size = ",sys.getsizeof(a))

輸出

2
3
4
Size = 48

Python中的xrange()方法

xrange()方法返回生成器物件,與Python中的range()方法有點類似。

注意 − xrange() 僅在 Python 2.x 中執行。在 Python 3.x 中會報錯。

語法

語法如下:

range(start, stop, step)

這裡:

  • start − 指定起始位置的整數。

  • stop − 指定結束位置的整數。(不包含stop)

  • step − 指定增量,即跳過的步數。

讓我們看一些例子。

注意 − 我們在 Python 2.x 中執行以下程式。

使用xrange()建立數字序列

示例

我們將在這裡使用xrange()方法建立一個序列:

# Python 2.x # Using the range() to get sequence of numbers # Defines start and stop parameters a = range(4, 8) for n in a: print(n)

輸出

4
5
6
7

使用xrange()建立數字序列並設定步長

示例

我們將在這裡使用xrange()方法建立一個序列,並將設定步長:

# Python 2.x # Using the xrange() to get sequence of numbers # Defined start, stop and step parameters a = xrange(4, 12, 2) for n in a: print(n)

輸出

4
6
8
10

使用xrange()建立序列並獲取物件的大小

示例

getsizeof()方法用於獲取給定物件以位元組為單位的大小:

#Python 2.x import sys # Using the xrange() to get sequence of numbers # Defined start and stop parameters a = xrange(2, 5) for n in a: print(n) # Get the size print("Size = ",sys.getsizeof(a))

輸出

2
3
4
('Size = ', 40)

上面顯示xrange()僅佔用40位元組。在上一節中,我們看到對於相同數量的元素,range()方法佔用了48位元組。因此,xrange()佔用更少的記憶體。

range() vs xrange()

現在,讓我們看看區別:

依據 range() xrange()
含義 range()方法返回一個數字序列,即整數列表。 xrange()方法返回一個生成器物件。
Python版本 在Python 3.x中有效 在Python 2.x中有效
消耗更多記憶體(如上所示) 消耗更少記憶體(如上所示)
操作 它返回一個數字列表,因此我們可以執行算術運算。 在xrange()方法上無法進行算術運算。
執行速度 比xrange()慢 比range()快

更新於:2022年9月15日

4K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告