用AI赚第一桶💰低成本搭建一套AI赚钱工具,源码可二开。 广告
* 作者:煮酒品茶 tea * 博客:http://www.zwhset.com http://cwtea.blog.51cto.com * 目前在京峰教育担任python讲师 # 0、zip函数 > zip函数接收若干个序列,将它们下标相同的值组成一对元组 # 1、函数原型 ~~~ zip(...) zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)] # 返回一个list ~~~ # 2、zip方法分析 ~~~ def zip(*iterables): # zip('ABCD', 'xy') --> Ax By sentinel = object() #初始化一个对象 iterators = [iter(it) for it in iterables] #遍历对象并存为生成器对象被使之可被迭代,这里非常关键 while iterators: result = [] for it in iterators #核心处理代码(x,y):这里的x,y是不同元素的不同迭代 elem = next(it, sentinel) #获取生成器的第一个元素,随后使用第二个进行组合。result.append(elem) if elem is sentinel: #这里有个判断,如果说元素不平衡则会直接取消 return result.append(elem) #元素组合 yield tuple(result) #生成器返回 ~~~ 这段代码利用了生成器的概念,生成器一次返回一个,然后用不同的生成器去获取第一个,也就是x生成器的元素与y生成器的元素,最后进行元素组合。 # 3、样例 ~~~ >>> zip('ab','bc') [('a', 'b'), ('b', 'c')] >>> seq1 = ['Michael','Lucy','Linda','Jason'] >>> seq2 = [70,90,85,60] >>> reslut = zip(seq1,seq2) >>> print reslut # 两个列表一一对应生成一个元组对,放在一个列表中 [('Michael', 70), ('Lucy', 90), ('Linda', 85), ('Jason', 60)] >>> dict(reslut) # 使用dict转成一个字典 {'Linda': 85, 'Michael': 70, 'Lucy': 90, 'Jason': 60} ~~~ 应用场景: 把序列组合成元组对,可以通过dict函数很方便的转成一个dict, 如果两个序列长度不相等会忽略掉元素