1, 内建函数:
(1),sorted(iterable[,key][,reverse])排序
返回一个新的列表, 默认升序
reverse 是反转, 当 reverse 是 True 时进行反转
(2),chr(i)给一个一定范围的整数返回对应的字符
例: chr(97)
ord(c)返回字符对应的整数
例: ord('a')
(3), 翻转 reversed(seql)
返回一个翻转元素的迭代器
那么我们可以对它进行 next()操作
(4), 枚举 enumerate(seq,start=0)
迭代一个序列, 返回索引数字和元素构成的二元组
start 表示索引开始的数字, 默认为 0, 枚举的元素并没有少, 只是索引的开始位置做了偏移. 枚举生成的也是一个迭代器
(5), 迭代器和取元素 iter(iterable),next(iterator)
iter 将一个可迭代器对象封装成一个迭代器
next 对一个迭代器取下一个元素. 如果全部元素都取过了, 再次 next 会抛异常
例: it=iter(range(5))
- next(it)
- it=reversed([1,4,5])
- next(it)
(6), 拉链函数 zip(*iterables)
像拉链一样, 把多个可迭代对象合并在一起, 返回一个迭代器; 将每次从不同对象中取到的元素合并成一个元素."木桶原理", 最终合成的迭代器按最短的那个迭代器长度
例, list(zip(range),range(10)))
- dict(zip(range(10),range(10))) #用于生成字典很方便, 前面的作为 key, 后面的作为 value
- {
- str(x):y for x,y in zip(range(10),range(10))
- } #用到了解构
- {
- str(x):y for x,_,y in zip(range(10),range(10),range(10,20))
- }
2, 可迭代对象
能够通过迭代一次次返回不同的元素对象, 所谓相同不是指值是否相同, 而是元素在容器中是否是同一个; 可以迭代但未必有序, 未必可以索引; 可迭代对象有: list,tuple, string,bytes,bytearray,range,set,dict, 生成器等; 可以使用成员操作符 in,not in ,in 本质上就是遍历对象
3, 迭代器
特殊的对象, 一定是可迭代器对象, 具备可迭代对象的特征; 通过 iter 方法把一个可迭代对象封装成迭代器; 通过 next()方法, 迭代 迭代器对象; 生成器对象就是迭代器对象. 迭代器不一定是生成器, 生成器是一个惰性 (按需) 求值的过程
来源: http://www.bubuko.com/infodetail-3354300.html