首先,zip()函数是一个迭代器(即遍历的意思),会将多个对象数据对应位置的数据放在元组里并返回一个对象。
data1 = [1, 2, 3, 4] data2 = ["a", "b", "c", "d"] data = zip(data1, data2) print(data) print(type(data))
以下是代码的输出结果:
出现 zip object at ...可以理解为zip()方法是从每个对象的第0个位置开始遍历,首先将每个对象的第0个位置的数据取出来放在一个元组对象里,并将其放在zip对象里(节省内存),然后继续遍历下一个位置的数据(即迭代器),需要查看内容时可以用list()方法将其转化为列表对象。
data1 = [1, 2, 3, 4] data2 = ["a", "b", "c", "d"] data = list(zip(data1, data2)) print(data) print(type(data))
以下是代码的输出结果:
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
其次,遍历的数据类型可以是列表,元组以及字典的组合,但是对字典对象进行遍历时只会取字典键值对中的"键",而"值"则会丢弃。
data1 = [1, 2, 3] data2 = ("a", "b", "c") data3 = {"x": 7, "y": 8, "z": 9} data = list(zip(data1, data2, data3)) print(data)
以下是代码的输出结果:
[(1, 'a', 'x'), (2, 'b', 'y'), (3, 'c', 'z')]
另外,当遍历的对象长短不一时,则在遍历完长度最短对象的时候就会停止遍历,其他长度更长对象的未遍历到的数据则会"丢弃"。
data1 = [1, 2, 3, 4, 5] data2 = ("a", "b", "c", "d") data3 = {"x": 7, "y": 8, "z": 9} data = list(zip(data1, data2, data3)) print(data)
以下是代码的输出结果:
[(1, 'a', 'x'), (2, 'b', 'y'), (3, 'c', 'z')]
最后,zip(*)可以理解为zip()方法的逆过程,但是返回的是一个元组对象。
data1 = [1, 2, 3] data2 = ("a", "b", "c") data3 = {"x": 7, "y": 8, "z": 9} data = zip(data1, data2, data3) m, n, k = zip(*data) print(m, n, k)
以下是代码的输出结果:
(1, 2, 3) ('a', 'b', 'c') ('x', 'y', 'z')
该文章主要用来记录作者在学习python时的心得感悟,如果有误请各位批评指正!