ai-station/.venv/lib/python3.12/site-packages/textual/_partition.py

28 lines
844 B
Python
Raw Permalink Normal View History

2025-12-25 14:54:33 +00:00
from __future__ import annotations
from typing import Callable, Iterable, TypeVar
T = TypeVar("T")
def partition(
predicate: Callable[[T], object], iterable: Iterable[T]
) -> tuple[list[T], list[T]]:
"""Partition a sequence into two list from a given predicate. The first list will contain
the values where the predicate is False, the second list will contain the remaining values.
Args:
predicate: A callable that returns True or False for a given value.
iterable: In Iterable of values.
Returns:
A list of values where the predicate is False, and a list
where the predicate is True.
"""
result: tuple[list[T], list[T]] = ([], [])
appends = (result[1].append, result[0].append)
for value in iterable:
appends[not predicate(value)](value)
return result