赞
踩
iter() 是迭代器的意思iterator.
函数里面输入的是一个对象,输出的是一个迭代器对象。
那么iter 可以迭代的对象有哪些呢?
>>> list_a = [1,2,3]
>>> iter_a = iter(list_a)
>>> type(list_a)
<class 'list'>
>>> type(iter_a)
<class 'list_iterator'>
>>>
>>> turple_b = (1,2,3)
>>> iter_b = iter(turple_b)
>>> type(turple_b)
<class 'tuple'>
>>> type(iter_b)
<class 'tuple_iterator'>
>>>
d = {"a":1,"半斤地瓜烧":2}
iter_d = iter(d)
type(d)
<class 'dict'>
type(iter_d)
<class 'dict_keyiterator'>
s = "ILOVEPYTHON"
iter_s = iter(s)
type(s)
<class 'str'>
type(iter_s)
<class 'str_iterator'>
dog = {"二哈","柯基","田园犬"}
iter_set = iter(dog)
type(dog)
<class 'set'>
type(iter_set)
<class 'set_iterator'>
object.__iter()__
并且这个函数的就是用iter(s) 得来。
s = "I love python."
iter_s1 = s.__iter__()
iter_s2 = iter(s)
# iter_s1和iter_s2是获取对象的生成器的用法是等价的
法二
对于一个对象,用内置函数isinstance()直接查看比较。
from collections import Iterable
a = []
isinstance(a,Iterable)
True
isinstance(1111111111,Iterable)
False
iterator 有区别于其他可序列化的对象,当读取了一次以后,就不再读取,读完之后,迭代器就停止迭代。
#next(object)
#object.__next__()
s = "I love python"
iter_s = iter(s)
s1 = next(iter_s)
s2 = iter_s.__next__()
print(s1,s2)
s = "I love python"
iter_s = iter(s)
for i in range(100):
print(iter_s.__next__())
>>> s = "I love python"
>>> iter_s = iter(s)
>>> s[0]
'I'
>>> iter_s[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str_iterator' object is not subscriptable
python中,函数中有 yield 称为生成器(generator)。只能用于迭代操作,更简单点理解生成器就是一个迭代器。
def square():
for i in range(10):
yield i ** 2
kk = square()
print(kk.__next__())
print("for ----")
for i in kk:
print(i)
print(type(kk))
以上就是迭代器,可迭代对象,next(),iter(),yield 关键字。的使用和区别。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。