python 的zip函数

本文详细介绍了Python中zip函数的工作原理及其用法,包括如何将多个列表打包为元组列表,以及如何逆向操作(unzip)恢复原始列表。特别强调了zip对象的特点及其在迭代过程中的行为。

zip可以把多个输入list拼成一个由元组组成的zip对象(实质是一个列表,下文称为输出列表),元组顺序从每个输入列表抽取一个元素,生成列表长度是最短输入列表的长度。python 3 和 python 2 不一样,要显示 zip的话,需要用内置函数 list()转换,但是list转换之后,zip对象就变空了。zip(* zip变量) 可以unzip,前提是这个zip变量没有被迭代和list()过。

a = [1,2,3]
b = ['a','b','c']
z = zip( a , b )
type(z)
d1 = list(z)
d2 = list(z)
print('d1',d1)
print('d2',d2)

输出:

d1 [(1, 'a'), (2, 'b'), (3, 'c')]
d2 []

使用迭代:

a = [1,2,3]
b = ['a','b','c']
z = zip( a , b )
for z1 , z2 in z :
    print( z1 , z2 )
输出:
1 a
2 b
3 c
zip(* zip变量) 可以unzip,前提是这个zip变量没有被迭代和list()过,   请看:
a = [1,2,3]
b = ['a','b','c']
z = zip( a , b )
for z1 , z2 in z :
    print( z1 , z2 )
a1, b1 = zip(*z)
输出:
1 a
2 b
3 c
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-8-d8e36d15a7f5> in <module>()
      4 for z1 , z2 in z :
      5     print( z1 , z2 )
----> 6 a1, b1 = zip(*z)

ValueError: not enough values to unpack (expected 2, got 0)
而这样没经过迭代的可以unzip:
a = [1,2,3]
b = ['a','b','c']
z = zip( a , b )
a1, b1 = zip(*z)
print( a1 , b1 )
输出:
(1, 2, 3) ('a', 'b', 'c')





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值