1. 程式人生 > >【python】關於range()與xrange()

【python】關於range()與xrange()

據說range比xrange開銷要大,原因是range會直接生成一個list物件,而xrange每次呼叫返回其中的一個值;參考:http://yushunzhi.iteye.com/blog/207850。於是好奇做了個小小的測試,比較兩個函式效能到底有多大差別。 (1)測試程式碼
#!/usr/bin/env python
from datetime import *

def test_range():
        c1=0
        t1 = datetime.now()
        for i in range(0,100000):
                c1 += 1
        print datetime.now()-t1

def test_xrange():
        c1=0
        t1 = datetime.now()
        for i in xrange(0,100000):
                c1 += 1
        print datetime.now()-t1

if __name__ == '__main__':
        test_range()
        test_xrange()

(2)執行結果
(3)小結 從上圖的三次執行結果可以看出,range在相同計算量下用時比xrange多了70%左右。另外,在不同的計算量情況下,用時基本也維持在這個比例。因此,如果並不需要返回list物件的話,xrange會是個好選擇。

相關推薦

Python爬蟲反爬蟲大戰

公司 學校 爬取 nbsp 識別 防止 toc 壓力 自動 爬蟲與發爬蟲的廝殺,一方為了拿到數據,一方為了防止爬蟲拿到數據,誰是最後的贏家? 重新理解爬蟲中的一些概念 爬蟲:自動獲取網站數據的程序反爬蟲:使用技術手段防止爬蟲程序爬取數據誤傷:反爬蟲技術將普通用戶識別為爬蟲,

Pythonpop迭代不能共用

l = [0,1,5,3,2,7,6] for i in range(len(l)): print(i) if l[i]>3: l.pop(i) d=dict() for i in range(10): d[i] = i i=0 for k,

Python例項

面向物件最重要的概念就是類(Class)和例項(Instance),必須牢記類是抽象的模板,比如Student類,而例項是根據類創建出來的一個個具體的“物件”,每個物件都擁有相同的方法,但各自的資料可能

Pythonimportfrom import真的是淺拷貝和深拷貝嗎

最近在準備面試,回頭看python基礎的過程中,遇到一些小問題。 模組的搜尋順序是: 當前程式所在目錄 當前程式根目錄 PYTHONPATH 標準庫目錄 第三方庫目錄site-packages目錄 path 變數本質是一個列表,可以向path中新增模

Python程序程序池的屬性方法及注意事項

1、程序的概念       程序(Process)是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。在早期面向程序設計的計算機結構中,程序是程式

Pythoniteritems()itemgetter()函式作用

iteritems()函式作用: 以書中classCount.iteritems()為例,作用是將字典classCount分解為元組列表 若classCount = {‘A’:1,‘B’:2,‘C’:3} 則分為 [‘A’,’B’,’C’] 與 [1,

python關於range()xrange()

據說range比xrange開銷要大,原因是range會直接生成一個list物件,而xrange每次呼叫返回其中的一個值;參考:http://yushunzhi.iteye.com/blog/2078

Python那些事兒range()和xrange()

無論是range()還是xrange()都是Python裡的內建函式。這個兩個內建函式最常用在for迴圈中。range()和xrange() 在Python 2裡是兩種不同的實現。 但是在Python 3裡,range()這種實現被移除了;保留了xra

Python11、集合字典的實現

python一、字典的實現dict是在list之上實現的 i(索引) = hash(key) % solt(槽位數)此時i重復了怎麽辦(hash沖突)?1、拉鏈法 每個槽位上拉一個List,就是拉鏈法2、開地址法 使用某個算法重新計算i,就交開地址法 常用,效率更高,i = fn(key, i)【Pyt

Python Web開發框架的基本概念開發的準備工作

世紀 依賴包 ade 並不是 模板 界面 inux tar cal Web框架基本概念 現在再來寫這篇文章顯然有些馬後炮的意思。不過正是因為已經學習了Flask框架, 並且未來計劃學習更加體系化的Django框架,在學習過程中碰到的很多術語等等,非常有必要通過這樣一篇

python 基礎 2.7 rangexrange的區別

占用 打開 start bsp ont pre xrange eight spa #/usr/bin/python #coding=utf-8 #@Time :2017/10/25 19:22 #@Auther :liuzhenchuan #@File :range

[Python]rangexrange用法對比

成了 iter python 單個 我們 for循環 trac ble 可用 【整理內容】具體如下: 先來看如下示例:>>>x=xrange(0,8)>>> print xxrange(8)>>>print x[0

Python無須numpy,利用map函數zip(*)函數對數組轉置(轉)

http details 介紹 二維數組 nbsp 圖片 因此 art comm http://blog.csdn.net/yongh701/article/details/50283689 在Python的numpy中,對類似array=[[1,2,3],[4,5,6],

pythontry子句的有效性Exception的返回

python python異常拋出 異常拋出 函數內部的Exception無法被兩次catch,且不能用return方式返回給外層,只可以用raise的方式二次生成try子句中,直到raise Exception之前的語句都生效,且不會被回滾掉綜合:【python】try子句的有效性與Except

Python一些概念對比

name 返回 成員方法 裏的 hello 支持 寫法 方法名 三個參數 type.__new__() : 返回類。可以把類看作是metaclass 創建出來的實例 普通類裏的__new__() : 返回類的實例。 __new__() : 返回類的實例。Python解

Python控制流程生成器 | 協程 | 期物 | 任務對比聯系

創建 都沒有 all 第一部分 需求 性能問題 大致 set 我們 Python 的 asyncio 類似於 C++ 的 Boost.Asio。 所謂「異步 IO」,就是你發起一個 IO 操作,卻不用等它結束,你可以繼續做其他事情,當它結束時,你會得到通知。 Asyncio

Python開發第4節Python分支結構循環結構

pid 變化 操作 年齡 當前 name () 執行順序 div 1、流程控制   流程: 計算機執行代碼的順序就是流程   流程控制: 對計算機代碼執行順序的管理就是流程控制   流程分類: 流程控制共分為3類: 順序結構 分支結構/選擇結構 循環結構 2、分

Pythonset() 集合操作運算 && 元素輸出順序

集合 | SET 集合(set)是Python中一種重要的資料型別,表示一組各不相同元素的無序集合,其主要應用於重複元素消除及關係測試等 集合在Python內部通過雜湊表實現,其本徵無序,輸出時所顯示的順序具有隨機性,且與執行環境相關 操作與運算 主要包括基於不同物件

Python字典或者對象類型中鍵或者屬性的獲取存在性判斷

ssss som lse dma 一點 ror orm something erro # 定義測試用對象A,字典B class A(object): length = 10 B ={"length":10} # 判斷對象是否含有某種屬性 # 推薦這種方式,更Py

Python-006 python獲取當前系統所有程序pid名稱

【Python】-006 python獲取當前系統所有程序pid與名稱    【Python】-006 python獲取當前系統所有程序pid與名稱 1、實現 2、注意 1、實現