I had a similar situation to you in the past. What I did was implement:
def lazy_split(iter_: Iterable, split_num: int) -> list[Iterable]:
k, m = divmod(len(iter_), split_num)
return [iter_[i*k+min(i, m):(i+1)*k+min(i+1, m)] for i in range(split_num)]
numbers = [52, 86, 102, 122, 964, 1075, 1420]
print(lazy_split(numbers, 5))
# Output: [[52, 86], [102, 122], [964], [1075], [1420]]
It is a slightly modified version of tixxit's answer to a similar question: https://stackoverflow.com/a/2135920
I called it lazy_split as it attempts to slice the iterable instead of iterating through it.