来源:python中国网 时间:2020-04-06

  在python3中,zip()函数返回一个可迭代对象,对象中的每个值是iterable中元素的索引及值组成的元组。这样做的好处是节约内存。在 Python 2.x 中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))


<zip object at 0x000001E7792E23C8>
(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]