利用迭代器的原理构造一个具有与zip()相同功能的迭代器,命名为myzip类
时间: 2024-02-18 10:04:04 浏览: 24
好的,我可以帮你实现一个myzip类,具有与zip()相同的功能。zip()函数可以将多个可迭代对象中的元素一一对应地打包成元组,然后返回一个迭代器,每次调用next()方法时返回一个元组,直到其中任意一个可迭代对象结束为止。
下面是myzip类的实现代码:
```python
class myzip:
def __init__(self, *iterables):
self.iterables = iterables
self.length = len(iterables[0]) # 以第一个可迭代对象的长度为准
def __iter__(self):
return self
def __next__(self):
if self.length == 0: # 如果第一个可迭代对象为空,则直接抛出 StopIteration
raise StopIteration
result = tuple([next(it) for it in self.iterables])
self.length -= 1 # 每次迭代后长度减一
return result
```
使用方法与zip()相同:
```python
a = [1, 2, 3]
b = ['a', 'b', 'c']
c = (True, False, True)
for x, y, z in myzip(a, b, c):
print(x, y, z) # 输出1 a True, 2 b False, 3 c True
```
希望这个实现能够满足你的需求。如果你有其他问题,可以继续问我。