关于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))
#!/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()
### 注意:第二次读取zip()返回值,不会有报错,读不到东西,仍然静默。