迭代(iterate)
可直接遍历的类型:list, tuple, dictionary, file
可迭代的对象(实现迭代器协议的对象)支持遍历/循环 -- 目的:节省内存
可实现迭代协议的对象:对象内部有next方法:__next__()
f.__next__()
全局方法:next(f)
file 有__next__
list没有
但为啥还能for,因为for实现了额外步骤
可迭代的对象
字典表遍历时只能遍历取出键
d={'a':1,'b':2}
for k in d:
print{k}
如下写法错误:
d={'a':1,'b':2}
for k,v in d:
print{k,v}
迭代工具
for
推导
map
迭代器对象&可迭代对象
迭代器对象对象已经实现
可迭代对象需要额外加iter()方法,用于生成迭代器,用for时自动生成 __iter__()
iter(f) is f
True 则说明是迭代器对象
若需要可迭代对象能使用__next__()函数,可以用:i = iter(urls) 当urls为列表时
为什么列表不实现:因为列表可嵌套列表,可能使结构复杂
内置可迭代对象
(1)range() 类型为range
zip //负责将两个集合合成一个
result = zip (['x'],[1])
类型为zip
print结果为元组
有next方法
map将每一个元素应用函数的执行