迭代器的應用以及說明的問題

2022-07-21 14:33:32 字數 1488 閱讀 1554

一般使用for迴圈的順序:

先建立乙個迭代器:列表,並且列表內已存在資料

接著使用 for迴圈遍歷列表

但這樣存在乙個問題,假如列表內的資料量很大,這樣還未使用for迴圈便已經被列表占用很大的資源

這時我們就可以將這個迭代器做成乙個生成資料的迭代器,而非只是占用大資源的資料,從而減少資源占用

python2裡有range和xrange,而前者和後者區別是,range就像是那個占用大資源的資料,xrange則是生產資料的迭代器

python3並沒有xrange,它的range就是乙個生產資料的迭代器

同理,list(),和tuple(),之間並非簡單的轉換,而是建立了乙個空列表/元組,然後不斷將原列表/元組的資料新增到空列表/元組中,也就是生產資料的迭代器

例子中 for迴圈遍歷的nums是已經存在需要遍歷的所有資料

#

未使用迭代器的斐波那契數列例子

nums =list()

a =0

b = 1i =0

while i < 10:

a, b = b, a+b

i += 1

for num in

nums:

print(num)

例子中 for迴圈遍歷的nums需要用幾個到才去生產幾個(即每遍歷獲取乙個num,才生產乙個資料)

# 使用了迭代器的斐波那契數列的例子

#for 迴圈的物件並不是個內容,而是生成內容的方法,這樣做可以節省資源

class

fibonacci(object):

def__init__

(self, all_num):

self.all_num =all_num

self.current_num =0

self.a =0

self.b = 1

def__iter__

(self):

return

self

def__next__

(self):

if self.current_num ret =self.a

self.a, self.b = self.b, self.a+self.b

self.current_num += 1

return

ret

else

:

raise

stopiteration

fibo = fibonacci(10)

for num in

fibo:

print(num)

memcpy 的使用以及迭代器的使用

memcpy 拷貝記憶體內容 相關函式 bcopy memccpy memmove strcpy strncpy 表頭檔案 include 定義函式 void memcpy void dest,const void src,size t n 函式說明 memcpy 用來拷貝src所指的記憶體內容前n...

集合中Iterator迭代器的使用以及實現原理。

collection集合元素通用的獲取方式,在取之前先要判斷集合中有沒有元素,如果有就把這個元素取出來,繼續在判斷,如果還有就再取出來,一直把集合中的元素全取出來,這種去出方式叫做迭代。迭代器的作用就是獲取集合中的元素的方式。介面iterator有兩個抽象的方法 演示 如下 如上圖所示當例項化ite...

Jrtp的簡單應用,以及記憶體洩漏的問題。

工程發生了記憶體洩漏,排查許久發現是jrtp傳輸的問題。在此備份一下,以共勉。接收端 段 int main void while sess.gotonextsourcewithdata sess.enddataaccess ifndef rtp support thread status sess....