Python版本: Python3.7
运行平台: Mac OS
IDE: Anaconda: jupyter notebook
一、zip()函数理解
从参数中的多个迭代器取元素组合成一个新的迭代器,新的迭代器默认是元组。。
zip()括号里必须是(元组、列表、字典等)迭代器。
1、zip()函数中只有一个参数时
a = [1, 2, 3, 4]
b = zip(a)
print(\"zip()函数的返回类型:\", type(b))
print(\"zip对象转化为列表:\", list(b))
运行结果如下:
\'\'\'
zip()函数的返回类型: <class \'zip\'> #可以看到zip函数返回的是对象,需要转换成列表。
zip对象转化为列表: [(1,), (2,), (3,), (4,)] #不知道为啥有个有个逗号。
\'\'\'
2、zip()函数中有两个参数时
a.先看下一维数组。
a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9, 10]
print(\"行与列相同:\", list(zip(a, b)))
print(\"行与列不同:\", list(zip(a, c)))
运行结果如下:
\'\'\'
行与列相同: [(1, 4), (2, 5), (3, 6)] #从a和b依次各取出一个元素组成元组,再将依次组成的元组组合成一个新的迭代器。
行与列不同: [(1, 7), (2, 8), (3, 9)] #从a和b依次各取出一个元素组成元组,多的就去掉,不进行组合。
\'\'\'
b.在看下二维数组。
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b = [[2, 2, 2], [3, 3, 3], [4, 4, 4]]
c = [[2, 2, 2], [3, 3, 3]]
print(\"行与列相同:\", list(zip(a, b)))
print(\"行与列不同:\", list(zip(a, c)))
运行结果如下:原理类似。
\'\'\'
行与列相同: [([1, 2, 3], [2, 2, 2]), ([4, 5, 6], [3, 3, 3]), ([7, 8, 9], [4, 4, 4])]
行与列不同: [([1, 2, 3], [2, 2, 2]), ([4, 5, 6], [3, 3, 3])]
\'\'\'
二、*zip()函数理解
*zip()函数是zip()函数的逆过程,将zip对象变成原先组合前的数据。
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b = [[2, 2, 2], [3, 3, 3], [4, 4, 4]]
c = [[2, 2, 2], [3, 3, 3]]
print(\"行与列相同:\", *zip(a, b))
print(\"行与列不同:\", *zip(a, c))
运行结果如下:
\'\'\'
行与列相同: ([1, 2, 3], [2, 2, 2]) ([4, 5, 6], [3, 3, 3]) ([7, 8, 9], [4, 4, 4]) #三个元组
行与列不同: ([1, 2, 3], [2, 2, 2]) ([4, 5, 6], [3, 3, 3])
\'\'\'
看下是否可逆。
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b = [[2, 2, 2], [3, 3, 3], [4, 4, 4]]
c = [[2, 2, 2], [3, 3, 3]]
a,b=zip(*zip(a, b))
print(\'a=\',a)
print(\'b=\',b)
运行结果如下:结果可逆。
\'\'\'
a= ([1, 2, 3], [4, 5, 6], [7, 8, 9]) #元组格式
b= ([2, 2, 2], [3, 3, 3], [4, 4, 4])
\'\'\'
继续阅读与本文标签相同的文章
-
如何检测 Web 服务请求丢失问题
2026-05-18栏目: 教程
-
基于阿里云服务器ECS的建站过程
2026-05-18栏目: 教程
-
8分钟5个点让你彻底了解负载均衡
2026-05-18栏目: 教程
-
2019年9月16日,开发者社区奖励办法--8月评选结果正式公布
2026-05-18栏目: 教程
-
RocketMQ 主题扩分片后遇到的坑
2026-05-18栏目: 教程
