Подсказка типа, чтобы вернуть итерируемый размер того же типа, что и входные данные?Python

Программы на Python
Anonymous
Подсказка типа, чтобы вернуть итерируемый размер того же типа, что и входные данные?

Сообщение Anonymous »

Следующий код работает, но в зависимости от того, как я исправлю подсказку типа, на это будет жаловаться либо PyCharm, либо mypy. Я пробовал Sized, Iterable и Collection для типа S.

Код: Выделить всё

T = TypeVar
S = TypeVar("S", bound=Collection[T])

def limit(i: S, n: int) -> S:
"""
Limits the size of the input iterable to n.  Truncation is randomly chosen.
"""
if len(i)  len(i), верните i вместо выдачи ошибки
[*]Тип коллекции вывода должен быть идентичен входному.  список[интервал | str] in = list[int | стр] выход; set[float] in = set[float] out.
[/list]
Если что-то подобное уже есть в стандартной библиотеке, Я воспользуюсь этим. 

Подробнее здесь: [url]https://stackoverflow.com/questions/79036744/type-hinting-to-return-the-same-type-of-sized-iterable-as-the-input[/url]

Вернуться в «Python»