我想学习zip类的功能.我写了这个非常简单的例子.
>>> names = ['name1','name2','name3']
>>> ages = ['age1','age2','age3']
>>> print(zip(names, ages))
<zip object at 0x03DB18F0>
>>> zipped = zip(names, ages)
for i in zipped:
type(i)
print(i)
Run Code Online (Sandbox Code Playgroud)
和输出(如预期的那样) -
<class 'tuple'>
('name1', 'age1')
<class 'tuple'>
('name2', 'age2')
<class 'tuple'>
('name3', 'age3')
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样写,请立即在此行后:
for i in zipped:
print(i)
Run Code Online (Sandbox Code Playgroud)
它编译但没有打印任何东西!
要重新检查,我再次这样做了 -
>>> zipped = zip(names, ages)
>>> for i in zipped:
print(i)
('name1', 'age1')
('name2', 'age2')
('name3', 'age3')
Run Code Online (Sandbox Code Playgroud)
这次打印正确.但是在做解压缩时 -
>>> names2, ages2 = zip(*zipped)
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
names2, ages2 = zip(*zipped)
ValueError: not enough values to unpack (expected 2, got 0)
Run Code Online (Sandbox Code Playgroud)
zipped由于某些原因,变量似乎变空了?
注意:如果需要,您可以更改问题的标题.我在windows(10)机器上使用python 3.6.1.
zip生成一个只能迭代一次的迭代器(<zip object at 0x03DB18F0>).一旦你迭代了它,它已经筋疲力尽了.如果要生成可以根据需要迭代的列表:
zipped = list(zip(names, ages))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1232 次 |
| 最近记录: |