1. 程式人生 > >Learning Python 018 Python2 和 Python3 中 range()函式的使用

Learning Python 018 Python2 和 Python3 中 range()函式的使用

  • 使用的電腦系統:Windows 10 64位
  • 使用的開發整合環境:PyCharm 2016.1.4
  • 使用的Python的版本:python 2.7.10 和 python 3.5.0

range() 函式

  • Python2中:用來建立一個列表(list)。
  • Python3中:用來建立一個可以生成list或者tuple的生成器。

Python2 range()函式 知識點

Python2 中的range() 函式可以生成一個list。(分配記憶體空間)

a = range(10)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = range(4,10)
# [4, 5, 6, 7, 8, 9]

Python2 中的xrange()函式不是生成一個list,而是生成一個生成器,不分配記憶體。

a = xrange(10)
# xrange(10)
b = list(xrange(10))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
c = tuple(xrange(10))
# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

Python3 range()函式 知識點

a = range(10)
# range(0, 10)

輸出:(打印出來的不是一個列表,而是一個生成器)。

Python3 選擇這樣做的原因:可以節約記憶體空間,詳情請參考這篇部落格:

Python2和Python3的記憶體釋放

Python3中的range()函式的功能和Python2中的xrange()函式一樣,所以在Python3中沒有xrange()函式。

要想生成list或者tuple,這樣做:

a = list(range(10))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = list(range(4,10))
# [4, 5, 6, 7, 8, 9]

a = tuple(range(10))
# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
b = tuple(range(4,10))
# (4, 5, 6, 7, 8, 9)

range()函式的使用

下面這段程式碼在Python2 和 Python3中得到的執行結果都是一樣的。

for i in range(10):
    print(i)

輸出:

0
1
2
3
4
5
6
7
8
9

執行結果是一樣的,但是執行的原理不同:

  • Python2:在第一次執行 range(10),就生成了一個[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]列表。
  • Python3:在每次執行range(10)時,生成一個元素i

相關推薦

Learning Python 018 Python2 Python3 range()函式的使用

使用的電腦系統:Windows 10 64位 使用的開發整合環境:PyCharm 2016.1.4 使用的Python的版本:python 2.7.10 和 python 3.5.0 ra

Learning Python 017 — Python2 Python3 的記憶體釋放

使用的電腦系統:Windows 10 64位 使用的開發整合環境:PyCharm 2016.1.4 使用的Python的版本:python 2.7.10 和 python 3.5.0 學習Python的記憶體釋放知識點的動機 之前我學過很多Pyt

每日一讀:《關於python2python3range

sequence list() 生成 但是 如果 eth 索引 奇怪 saving 官網原話是這麽說的:In many ways the object returned by range() behaves as if it is a list, but in fact i

Python 面向物件--Python2Python3@abstractmethod的用法

抽象方法: 抽象方法表示基類的一個方法,沒有實現,所以基類不能例項化,子類實現了該抽象方法才能被例項化。 Python的abc提供了@abstractmethod裝飾器實現抽象方法,下面以Python3的abc模組舉例。 @abstractmethod: 見下圖的

Python2Python3print的不同點

換行 避免 不換行 現在 lap 信息 內置 引號 輸出字符串 在Python2和Python3中都提供print()方法來打印信息,但兩個版本間的print稍微有差異 主要體現在以下幾個方面: 1.python3中print是一個內置函數,有多個參數,而python2中p

Python2 Python3 socket.inet_aton() 實現不同引發的血案

err 主動 __name__ for print 別人 most ddr whole 這幾天在做一個功能實現的時候,需要把別人用 Python2.6 寫好的腳步轉成 Python3.4 實現,大部分地方轉化都沒啥問題,但是在 socket.inet_aton() 轉化的過

Python2 Python3 默認編碼的差異

org gbk 不一致 sof unicode ignore 第一條 支持中文 win32 最近在使用 Python3.4 做一些腳本實現,發現對於編碼的處理上和 Python2.6 有很大的不同,就此機會把相關知識做個梳理,方便需要的時候查閱。 先說下概念和差異: 腳本

Python2Python3的rang()不同之點

用法 nbsp bsp 不同 .cn 有序 生成器 www .com 知道在python中rang()是一個有序的列表,在使用過程發現,Python2和Python3中的rang()不同之點,下面講述不同之點 1,Python2 rang()用法 ->

第一個python程式——python2python3使用的主要區別

python2 和python3的主要區別: 編碼格式 python2中有兩種字串型別:Unicode字串和非Unicode字串。 Python3中只有一種型別:Unicode字串。 python2編碼格式:ASCII碼 python3編碼格式:unicode碼 2.

python2python3的urllib

在Python3中包urllib2歸入了urllib中,所以要匯入urllib.request,並且要把urllib2替換成urllib.request # python2 import urllib2 url = 'http://www.jianshu.com/trending/we

python2python3整數相除的區別

       今天初次接觸python,學習的是python2,我的編譯器是python3,所以在學除法的時候,自己實驗的結果和教材結果不一致。 所以就查了一下,原來,python3做了優化,整數相除的結果可以為小數,比如10/4的結果就為2.5而不是py

python學習--python2python3共存時如何優雅地用pip安裝模組?

參考網頁: 1. 同時裝了Python3和Python2,怎麼用pip? 2. How to install pip for Python 3 on Mac OS X? 自己試了一下,發現其實解決方案很簡單。 在python2時,使用語句: pip install xxx

Python2Python3urllib庫urlencode的使用注意事項

前言 在Python中,我們通常使用urllib中的urlencode方法將字典編碼,用於提交資料給url等操作,但是在Python2和Python3中urllib模組中所提供的urlencode

python2python3的編碼問題

a = ‘中文’ 在python2中是utf-8格式的編碼 在python3中是unicode格式【unicode可以encode成任意其他格式的編碼】的編碼 在python2中,字串的表現形式以及編碼解碼如下 a = '中文' a '\xe4\xb

Python2Python3除法操作-的不同

X/Y 在3.0版本之前的Python中 >>>1/2 0 即一個整數(無小數部分的數)被另外一個整數除,計算結果的小數部分被截除了,只留下了整數部分 有時候,這個功能比較有用,譬如在做一些需要取位數上的值時可以利用此特性用於迴圈結束等,但通常,大家用不到

Python2 Python3 的關鍵字

         Python2中共有31個關鍵字:          and              del                from                not    

python2 python3分別如何讀取文字

# # 解決方案 字串的語義發生了變化: # py2 py3 # str -> bytes # unicode -> str # py2.x 寫入檔案前對unico

Python2Python3列表推導式的不同

作用 循環 沒有 補充 小結 創建 列表推導 列表推導式 red Python2和Python3中列表推導式的不同 python2 >>> x = 'my girl' >>> lst = [x for x in '

Win同時安裝python2python3及SulimeText3的python IDE搭建

一、下載安裝Sublime Text3,初衷是不想忍受pycharm的開啟速度,想享受下飛的質感。Sublime Text3的安裝已經久遠,請自行google。 二、安裝python2.7與python3.6(或其它版本),下載地址https://www.python.org/   1、下載

關於python2的xrangepython3range.........

最近幾天改網上的程式碼(好吧,我只是個搬運工)。。。然後,有python2的程式碼xrange處在python3的地方報錯,然後我改成了range不報錯了,然後,實驗室的妹子問起原因,然後,我。。。。。。於是,仔細查了查他們之間的區別 先看結果: Pyt