Python零基礎學習筆記(二十三)——迭代器

我是王佳俊發表於2019-01-23
from collections import Iterable, Iterator

```
可迭代物件:可以直接作用於for迴圈的物件統稱為可迭代物件
(Iterable) 可以用isinstance()去判斷一個物件是否是Iterable物件

可以直接作用於for的資料型別一般分兩種
1、集合類資料型別:list、 tuple、 dict、 set、 string
2、是generator,包括生成器和帶yield的generator function

```

print(isinstance([],Iterable))
print(isinstance((),Iterable))
print(isinstance({},Iterable))
print(isinstance("",Iterable))
print(isinstance((x for x in range(10)),Iterable))
print(isinstance(1,Iterable))

```
迭代器:不但可以作用於for迴圈,還可以被next()函式不斷的呼叫並返回下一個值
直到最後丟擲一個StopIteration錯誤表示無法繼續返回下一個值

可以被next()函式呼叫並不斷返回下一個之的物件稱為迭代器
(Iterator物件)

可以用isinstance()函式判斷一個物件是否是可迭代物件
```

print(isinstance([],Iterator))
print(isinstance((),Iterator))
print(isinstance({},Iterator))
print(isinstance("",Iterator))
print(isinstance((x for x in range(10)),Iterator))

l = (x for x in range(4))
print(l)
print(next(l))
print(next(l))
print(next(l))
print(next(l))

lq = (x for x in [1, 2, 3, 5])
print(next(lq))
print(next(lq))
print(next(lq))
print(next(lq))
#同理tuple、dict、set、string都可以

#轉換成Iterator物件
a = iter([2, 4, 6])
print(next(a))
print(next(a))
print(next(a))
print(isinstance((a), Iterator))

endstr = "end"
str = ""
for line in iter(input, endstr):
    str += line + "
"
print(str)


相關文章