from time import time from typing import Tuple from random import shuffle SECS_IN_MIN = 60 DEFAULT_TIMER = 12.0 def _shuffle_two_lists(a: list, b: list) -> Tuple[list, list]: indices = list(range(len(a))) shuffle(indices) a = [a[index] for index in indices] b = [b[index] for index in indices] return a, b def _pick_from_list_after_sorting_other(a: list, b: list[int]) -> list: indices = [i[0] for i in sorted(enumerate(b), key=lambda x: x[1])] return [a[index] for index in indices] def sample_list(indices: list, cost: list[int], count: int = None) -> list: if count is None: count = len(indices) indices, cost = _shuffle_two_lists(indices, cost) indices = _pick_from_list_after_sorting_other(indices, cost)[:count] return indices