Это однострочная функция, которая возвращает список из n элементов из списка a_list, как можно более равномерно. Возможно, вы захотите добавить обработку ошибок, например, если n
def select_n(a_list, n):
return [a_list[len(a_list) * k // n] for k in range(n)]
print(select_n(list(range(150)), 23))
print(select_n(list(range(23)), 23))
print(select_n(list(range(45)), 23))
Вывод:
[0, 6, 13, 19, 26, 32, 39, 45, 52, 58, 65, 71, 78, 84, 91, 97, 104, 110, 117, 123, 130, 136, 143]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
[0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43]