POO - 无法将可迭代对象的长度作为列表获取

POO - can't get length of iterables as a list

我的项目:我试图获得两个可迭代对象和 return 一个可迭代对象。

示例:

>>> iters = [i for i in range(5)], [i for i in range(10)]
>>> iters
[[0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]
>>> print([i for i in ranges(*iters, mtss=None)])
[(0, 0), (1, 1), ..., (8, None), (9, None)]
>>> print([i for i in ranges(*iters, maximum=False)])
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]

这是我的代码:

from typing import Any, Iterable

class ranges(object):
    def __init__(self, __iter1: Iterable, __iter2: Iterable, /, *__iters: Iterable, maximum: bool=True, mtss=None) -> None:
        # mtss -> make them the same size
        lenghts= [len(__iter1), len(__iter2), *[len(i) for i in range(__iters)]]
        self.until: int = (max if maximum else min)(lenghts)
        self.iters: tuple[Iterable] = (__iter1, __iter2, *__iters)
        self.mtss: Any = mtss

    ...

print(ranges([i for i in range(2)], [i for i in range(3)]))

错误:

Traceback (most recent call last):
  File "c:\Users\areza\Desktop\delta\__init__.py", line 28, in <module>
    print(ranges([i for i in range(2)], [i for i in range(3)]))
  File "c:\Users\areza\Desktop\delta\__init__.py", line 6, in __init__
    lenghts= [len(__iter1), len(__iter2), *[len(i) for i in range(__iters)]]
TypeError: 'tuple' object cannot be interpreted as an integer

如果直到 == 3:

[(0, 0), (1, 1), (2, None)]

我完成了代码,但无法修复这行代码

类型注释对你没有任何好处,只是让代码更难理解...

双下划线变量名是什么..?!

在这一行

lenghts= [len(__iter1), len(__iter2), *[len(i) for i in range(__iters)]]

问题是

range(__iters)

因为 range 需要一个整数,并且 __iters 在这一行中定义为参数元组:

def __init__(self, __iter1, __iter2, /, *__iters, maximum=True, mtss=None):

也许你的意思是

range(len(__iters))

?