Source code for aac_metrics.utils.collections

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from typing import TypeVar

T = TypeVar("T")


[docs] def duplicate_list(lst: list[T], sizes: list[int]) -> list[T]: """Duplicate elements elements of a list with the corresponding sizes. Example 1 ---------- >>> lst = ["a", "b", "c", "d", "e"] >>> sizes = [1, 0, 2, 1, 3] >>> duplicate_list(lst, sizes) ... ["a", "c", "c", "d", "e", "e", "e"] """ if len(lst) != len(sizes): msg = f"Invalid arguments lengths. (found {len(lst)=} != {len(sizes)=})" raise ValueError(msg) out_size = sum(sizes) out: list[T] = [None for _ in range(out_size)] # type: ignore curidx = 0 for size, elt in zip(sizes, lst): out[curidx : curidx + size] = [elt] * size curidx += size return out