python 迭代器,生成器

迭代

Python 的迭代是通过for ... in 来完成的。 只要是可迭代对象,都可以用python进行迭代。如 dict,str,tuple

d = {'a':1, 'b':2, 'd':4, 'c':3}
for key in d:
    print(key)
s = 'hello'
for i in s:
    print(i)

列表生成式

列表生成式是Python内置的可以用来创建list 的生成式。

>>>list(range(1,5))
[1,2,3,4]
>>>[x*x for x in range(1,5)]
[1,4,9,16]
>>>d = {'x':1, 'y':2, 'z':3}
>>>for k,v  in d.items():
>>>    print(k, '=', v)
x = 1
y = 2
z = 3

生成器

通过列表生成式,可以直接创建一个列表,但会受到内存限制。生成器(generator)是一种在循环过程中不断推算后续元素的机制。

>>>g = (x*x for x in range(1,5))
>>>for n in g:
>>>    print(n)
1
4
9
16
>>>g
 at 0x000000000F1A6660>

迭代器

迭代器(Iterator)是指可以被next()函数不断调用并返回下一个值的对象。
可以通过isinstance()判断一个对象是否是Iterator()对象。

>>>from collections.abc import Tterator
>>>isinstance((x for x in range(10)), Iterator)
True
>>>isinstance([], Iterator)
False
>>>isinstance({}, Iterator)
False
>>>isinstance('abc', Iterator)
False

tuple,dict,str是可迭代对象(iterable),但不是迭代器(iterator)
iter()函数可以将tuple,dict,striterable变为iterator

>>>from collections.abc import Tterator
>>>isinstance(iter([]), Iterator)
True
>>>isinstance(iter('abc'), Iterator)
True

你可能感兴趣的:(python 迭代器,生成器)