python迭代器簡介

2021-08-01 19:16:58 字數 3382 閱讀 5525

迭代器簡要筆記內容及其示例

#!/usr/bin/python

# -*- coding utf8 -*-

'''迭代器

重複的過程稱為迭代,每次重複即一次迭代,

並且每次迭代的結果是下一次迭代的初始值

'''# while true: #只滿足重複,因而不是迭代

# print('====>')

#下面才為迭代

# l = [1, 2, 3]

# count = 0

# while count < len(l): # 只滿足重複,因而不是迭代

# print('====>', l[count])

# count += 1

## l = (1, 2, 3)

# count = 0

# while count < len(l): # 只滿足重複,因而不是迭代

# print('====>', l[count])

# count += 1

# s='hello'

# count = 0

# while count < len(s):

# print('====>', s[count])

# count += 1

##為什麼要有迭代器?對於沒有索引的資料型別,必須提供一種不依賴索引的迭代方式

#可迭代的物件:內建__iter__方法的,都是可迭代的物件

# [1,2].__iter__()

# 'hello'.__iter__()

# (1,2).__iter__()

## .__iter__()

# .__iter__()

#迭代器:執行__iter__方法,得到的結果就是迭代器,迭代器物件有__next__方法

# i=[1,2,3].__iter__()

## print(i)

## print(i.__next__())

# print(i.__next__())

# print(i.__next__())

# print(i.__next__()) #丟擲異常:stopiteration

# i=.__iter__()

# print(i.__next__())

# print(i.__next__())

# print(i.__next__())

# print(i.__next__())

dic=

#可迭代物件變成迭代器

i=dic.__iter__()

#用迭代器的方法取出所有

while true:

try:

key = i.__next__()

print(dic[key])

except stopiteration:

break

s='hello'

print(s.__len__()) #等同於len(s)

s=#s.__iter__() #iter(s)

i = iter(s)

print(next(i))

print(next(i))

print(next(i))

print(next(i))

#如何判斷乙個物件是可迭代的物件 還是迭代器物件

# 'abc'.__iter__()

# ().__iter__()

# .__iter__()

# .__iter__()

# .__iter__()

f=open('a','w')

f.__iter__()

#可迭代資料型別有 字串 元組 列表 字典 元組 檔案

from collections import iterable,iterator

print(isinstance('abc',iterable)) #可迭代物件

# print(isinstance(,iterable))

# print(isinstance((),iterable))

# print(isinstance(,iterable))

# print(isinstance(,iterable))

# print(isinstance(f,iterable))

#是可迭代物件 不是迭代器 只有檔案是迭代器

print(isinstance('abc',iterator)) #迭代器測試

# print(isinstance(,iterator))

# print(isinstance((),iterator))

# print(isinstance(,iterator))

# print(isinstance(,iterator))

print(isinstance(f,iterator))

print(isinstance('abc'.__iter__(),iterator)) #執行完_iter_方法就是迭代器

'''可迭代物件:只有__iter__方法,執行該方法得到的迭代器物件

迭代協議:

物件有__next__

物件有__iter__,對於迭代器物件來說,執行__iter__方法,得到的結果仍然是它本身 #檔案型別

'''dic=

# print(dic.items())

# for k,v in dic.items():

# print(k,v)

#for k in dic: #dic執行_iter_方法 i=dic._iter_() k = next(i)

# print(k)

i=iter(dic)

while true:

try:

k=next(i)

print(k)

except stopiteration:

break

'''迭代器優缺點

優點:提供了一種不依賴於下標的迭代方式

迭代器本身來說,更節省記憶體

缺點: 無法按索引取,無法回退 不如序列型別靈活

'''#讀取檔案的節省記憶體方法,readlines預設讀取檔案所有內容到乙個列表

f=open('閉包.py',encoding='utf-8')

## for line in f.readlines():

# print(line)

print(next(f))

#for line in f:

# print(line)

#enumerrate也是迭代器

l=[10000,2,3,4,5]

i=enumerate(l)

print(next(i))

Python迭代器簡介

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

迭代器簡介

迭代器提供了比下標操作更通用的遍歷容器雷元素的方法。其對所有的容器都適用,現代c 程式更加傾向於適用迭代器而不是下標操作。迭代器測試 vector iterator begin v3.begin 指向容器的第乙個元素 vector iterator end v3.end z指向容器末端元素的下乙個 ...

迭代器簡介

迭代器iterator介面同collection map,也是j a集合框架的成員,不同於兩者的是其本身並非用來盛裝其他物件,而是用來遍歷訪問collection集合中的元素。map介面並沒有實現iterator iterator主要有以下方法 boolean hasnext 如果被迭代的集合元素還...