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))
?
我的项目:我试图获得两个可迭代对象和 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))
?