起因
今天在做力扣883时,遇到一个问题,想要将列表的每一列对应元素抽取出来进行比较,例如:
a = [1, 2]
b = [3, 4]
想要得到:
temp1 = [1, 3]
temp2 = [2, 4]
虽然遍历也可以实现,但是想寻求一种更简单的方式。
使用zip
通过zip的使用可以实现以上功能。
例如:
a = [1, 2]
b = [3, 4]
temp = list(zip(a, b))
得到:
temp = [(1, 3), (2, 4)]
使用zip(*)
zip可以视为zip()的逆运算,两者对应着解压和压缩的关系。
zip可以得到原来的a, b,例如:
a = [1, 2]
b = [3, 4]
temp = list(zip(a, b))
a, b = zip(*temp)
可以得到原来的a, b , (在python3中可能需要通过list()函数对a, b 进行转换)
zip(*)的高级用法
因为zip可以将一个列表解压,因此可以直接对列表进行处理,将多维列表的每一列抽取出来形成新列表,例如:
a = [[1,2],[3,4]]
temp = list(zip(*a))
可以得到:
temp = [(1, 3), (2, 4)]