迭代
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
<generator object <genexpr> 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,str
等iterable
变为iterator
>>>from collections.abc import Tterator
>>>isinstance(iter([]), Iterator)
True
>>>isinstance(iter('abc'), Iterator)
True
网友评论