在python3中,zip()函数返回一个可迭代对象,对象中的每个值是iterable中元素的索引及值组成的元组。这样做的好处是节约内存。在 Python 2.x 中zip() 返回的是一个列表。
zip函数语法如下:
zip([iterable, ...])
参数说明:
iterable -- 一个或多个迭代器;
我们可以使用 list() 把结果转换为列表输出。
(注意点1:如果你把可迭代对象循环输出后再list就是空列表)
(注意点2:如果你对可迭代对象使用了list,再循环输出可迭代对象就无数据了
# -*- coding: utf-8 -*-
a = [1,2,3]
b = [4,5,6]
res = zip(a,b)
print(res)
for i in res:
print(i)
# 此时列表是空
print(list(res))
(1, 4)
(2, 5)
(3, 6)
[]
# -*- coding: utf-8 -*-
a = [1,2,3]
b = [4,5,6]
res = zip(a,b)
list(res)
# 以下没有输出了
for i in res:
print(i)
如果各个迭代器的元素个数不一致,哪个元素个数少就按照谁的来。利用*号操作符,可以将元组解压为列表。
# -*- coding: utf-8 -*-
a = [1,2,3]
b = [4,5,6]
c = [7,8,9,10]
res = zip(a,b,c)
print(list(res))
# 没有输出了
for i in res:
print(i)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
# -*- coding: utf-8 -*-
a = [1,2,3]
b = [4,5,6]
a1,b1 = zip(*zip(a,b))
print(list(a1))
print(list(b1))
[1, 2, 3]
[4, 5, 6]