python 的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')





猜你喜欢

转载自blog.csdn.net/brooknew/article/details/80937325
今日推荐