def chunk_array(array, num_chunks, len_array):
    """
    Chunk a given list into a given number of smaller lists.
    :param array:
    :param num_chunks:
    :return:
    """
    # return [array[i:i + num_chunks] for i in range(0, len(array), num_chunks)]
    if len_array > num_chunks:
        if len_array % num_chunks == 0:
            chunks = list(zip(*[iter(array)] * (int(round(len_array / num_chunks)))))
            return chunks
        else:
            odd_num = (array[-1],)
            chunks = list(zip(*[iter(array)] * (int(round(len_array / num_chunks)))))
            chunks[-1] = chunks[-1] + odd_num
            return chunks
    else:
        return array