Python中zip()与zip(*)的使用与区别

最经看《利用Python进行数据分析》的前几章,遇到zip()函数与zip(*)函数经常是晕头转向,这里参考了一些资料,结合自己的理解说两句,欢迎交流指正~
首先来看zip(),该函数将列表、元组或其他序列的元素配对,新建一个元组构成的列表。这句话好理解,即将两个不同序列的元素以元组形式一一配对,举个例子:

a=['1','2','3']
b=['4','5','6']
print(list(zip(a,b)))
#输出如下:
[('1', '4'), ('2', '5'), ('3', '6')]

注意:zip所得元组形式的列表需用list()函数加以显示。

那么zip(*)又是个什么东东呢?书上是这样讲的:zip函数有一种机智的方式去“拆分”序列,这种方式的另一种思路就是将行的列表转换为列的列表。
听上去稍显拗口,我是这样解读的:即将原来矩阵(列表虽没有数组的性质,但作者“行”、“列”的用词可以让我们拓宽下自己的想象,方便理解)的每列拎出来作为一行,再以元组的形式塞回去,这样就达到了“将原来的行的列表转换为列的列表”的目的,以例子说明:

c=[['1','2','3'],['4','5','6']]
print(list(zip(*c)))
#输出如下:
[('1', '4'), ('2', '5'), ('3', '6')]

再来看个例子:

x=['河海大学','南京邮电大学']
y=['HHU','NJUPT']
#如果print以下两个会输出什么呢?
print(list(zip(x,y)))
print(list(zip(*zip(x,y))))
#就是它们!:
[('河海大学', 'HHU'), ('南京邮电大学', 'NJUPT')]
[('河海大学', '南京邮电大学'), ('HHU', 'NJUPT')]

关于zip赋值后地址调用的问题,我觉得还可以再研究下:

x=['河海大学','南京邮电大学']
y=['HHU','NJUPT']
z=zip(x,y)
print(list(z))
print(list(zip(*z)))
#输出结果:
[('河海大学', 'HHU'), ('南京邮电大学', 'NJUPT')]
[]

即令z=zip(x,y),为什么第二个print是空列表呢?欢迎有经验的童鞋交流解释下*_*

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值