地道な方法 地道に下の通り書くと型チェックを通りました。 def remove_none_iterator(it: Iterator[Optional[int]]) -> Iterator[int]: while True: try: elem = next(it) while elem is None: elem = next(it) yield elem except StopIteration: return def remove_none(iterable: Iterable[Optional[int]]) -> Iterable[int]: it = iter(iterable) return remove_none_iterator(it) ただしこれだと返り値が必ずイテレーターになってしまいます。しかしそもそも filter() 関数は iterable を受け取ってイテレー
![mypy で Iterable[Optional[type]] から Iterable[type] を導出したい](https://cdn-ak-scissors.b.st-hatena.com/image/square/f6bc393cd0b6bd2196935e603c5d031bd6ca6699/height=288;version=1;width=512/https%3A%2F%2Fcdn.sstatic.net%2FSites%2Fja%2FImg%2Fapple-touch-icon%402.png%3Fv%3D1cfb10b305ca)