zip

一、说明

zip([iterable, …])

参数iterable为可迭代的对象,并且可以有多个参数。

该函数返回一个以元组为元素的对象,其中第 i 个元组包含每个参数序列的第 i 个元素。

返回的对象长度被截断为最短的参数序列的长度。

只有一个序列参数时,它返回一个1元组的对象。没有参数时,它返回一个空的对象。

我们可以使用 list() 转换来输出列表。

pyhton2 和python3不同。因为不适用Python2。异同点不再描述。

二、创建

list_1 = list('hello')
list_2 = list('world')
list_3 = list('python')
tuple_1 = tuple(list_1)
list_4 = []

# 因为zip对象无法打印出来。所以会把zip转化为list.
zip_1 = list(zip(list_1, list_2))
zip_2 = list(zip(list_1, list_3))                               # 各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同
zip_3 = list(zip(list_1, list_4))                               # 如果存在空的迭代器,返回空列表
zip_4 = list(zip(list_1, tuple_1, list_2, list_3))              # 迭代器可以是各种形式的,也可以是多个
zip_5 = zip(list_1, list_3)
list_5, list_6 = zip(*zip_5)                                    # 可以理解为解压

print('zip_1:', zip_1)
print('zip_2:', zip_2)
print('zip_3:', zip_3)
print('zip_4:', zip_4)
print('list_5:', list_5)
print('list_6:', list_6)

三、遍历

list_1 = list('hello')
list_2 = list('world')

for i in zip(list_1, list_2):
    print(i)
print('**'*20)
for hello, world in zip(list_1, list_2):
    print(hello, world)

四、转化

 

list_a = list('hello')
list_b = list('world')
zip_1 = zip(list_a, list_b)

list_1 = list(zip_1)
list_2 = list(zip(list_a, list_b))     # 注意和list_1结果一致
tuple_1 = tuple(zip_1)
tuple_2 = tuple(zip(list_a, list_b))   # 注意和tuple_1结果不一致
dict_1 = dict(zip_1)
dict_2 = dict(zip(list_a, list_b))     # 注意和dict_1结果不一致

print('list_1: ', list_1)
print('list_2: ', list_2)
print('tuple_1: ', tuple_1)
print('tuple_2: ', tuple_2)
print('dict_1: ', dict_1)
print('dict_2: ', dict_2)

 五、补充

itertools模块中的zip_longest。返回的对象长度被截断为最长的参数序列的长度。

import itertools

list_1 = list('hello')
list_2 = list('world')
list_3 = list('python')

zip_1 = list(itertools.zip_longest(list_1, list_3))
print(zip_1)

 

原文地址:https://www.cnblogs.com/qianslup/p/12176273.html