关于PYTHON--ZIP的问题

关于PYTHON--ZIP的问题

list1 = [11, 22, 33, 44]
list2 = [55, 66, 77, 88]
z1 = zip(list1, list2)

#z2 = list(z1)
print(type(z1))

for x, y in z1:
    print(x, y)

这段代码,如果没有对Z1使用LIST函数,那么结果正常,但加了#z2 = list(z1),后面的遍历就无法显示
而且无论加这条代码,Z1都是一个ZIP格式的数据

这是为什么?

因为zip是一个生成器,它只存储一次值,list(z1)之后,原来的z1内存被释放就变为空的列表了。
下面代码第二次打印出来的是一个空的列表。

# -*- coding: utf-8 -*-

list1 = [11, 22, 33, 44]
list2 = [55, 66, 77, 88]
z1 = zip(list1, list2)

print(list(z1))
print(list(z1))


  zip()函数返回的是“生成器”,她存储的值只可以读取一次

代码试炼
#!/usr/bin/nve python
# coding: utf-8

list1 = [11, 22, 33, 44]
list2 = [55, 66, 77, 88]
z1 = zip(list1, list2)

z2 = list(z1)

print(f"\n{'type(z1):':>12}{type(z1)}{z1}\n\n{'type(z2):':>12}{type(z2)}{z2}\n\n{'type(z2[0]):':>12}{type(z2[0])}{z2[0]}\n\n")
print('用*破碎z2:print(z2[0])\n', *z2)
print(z2[0])
print() 
运行效果截图

img


###  注意:第二次读取zip()返回值,不会有报错,读不到东西,仍然静默。