python迭代器內部效率優化

2021-07-25 12:18:33 字數 1279 閱讀 9251

做效率優化的時候get到了奇怪的姿勢…

迭代器內部頻繁呼叫的資料最好與迭代主體在同一命名空間下

這能極大的提高迭代效率

原理尚未明確, 懷疑是由於python在查詢變數時解引用的開銷造成的

#coding=utf8

class

test_loop:

def__init__

(self, n):

self._i = 0

self._n = n

def__iter__

(self):

for self._i in reversed(range(self._n)):

yield self._i

class

test_loop1:

def__init__

(self, n):

self.i = 0

self.n = n

def__iter__

(self):

for self.i in reversed(range(self.n)):

yield self.i

class

test_loop2:

def__init__

(self, n):

self.i = 0

self.n = n

def__iter__

(self):

n = self.n

for i in reversed(range(n)):

yield i

if __name__ == '__main__':

import datetime

tic = datetime.datetime.now()

n = 100000000

tester = [test_loop(n), test_loop1(n), test_loop2(n), reversed(range(n))]

for item in tester:

print()

tic = datetime.datetime.now()

for i in item:

pass

print(datetime.datetime.now() - tic)

0:00

:15.918220

0:00

:15.805681

0:00

:07.884878

0:00

:03.350308

python 迭代器 python迭代器

迭代器 可以直接作用for迴圈的資料型別 我們已經知道,可以直接作用for迴圈的資料型別有以下幾種 一類是集合資料型別 如 list tuple dict set str等 一類是generator,包括生成器和帶yield的generator function 可迭代物件定義 這些可以直接作用fo...

python的迭代器 Python 迭代器

迭代器 迭代是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。可迭代物件 以直接作用於 for 迴圈的資料型別有以下幾種 一類是集合資料型別,如 list tuple dict set str 等...

python的迭代器 python 迭代器

在介紹迭代器之前,先說明下迭代的概念 迭代 通過for迴圈遍歷物件的每乙個元素的過程。python的for語法功能非常強大,可以遍歷任何可迭代的物件。在python中,list tuple string dict set bytes都是可以迭代的資料型別。可以通過collections模組的iter...