← Назад к вопросам
Каждый N-й элемент
2.0 Middle🔥 181 комментариев
#Теория тестирования
Условие
Напишите функцию, которая возвращает каждый N-й элемент из массива.
Пример
Вход: [1, 2, 3, 4, 5, 6, 7, 8, 9], N = 3 Выход: [3, 6, 9]
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Решение
Анализ задачи
Необходимо извлечь каждый N-й элемент из массива. Это типичная задача на работу с индексами и срезами данных, которая часто используется в автоматизации тестирования при выборке данных из логов, ответов API или выборке тестовых случаев из больших наборов.
Решение
Создам несколько вариантов решения:
def get_every_nth_element(arr: list, n: int) -> list:
"""Возвращает каждый N-й элемент из массива."""
if n <= 0:
raise ValueError("N должно быть положительным числом")
if not arr:
return []
return arr[n - 1::n]
class NthElementExtractor:
"""Класс для извлечения каждого N-го элемента."""
@staticmethod
def extract_iterative(arr: list, n: int) -> list:
"""Извлечение через цикл."""
if n <= 0:
raise ValueError("N должно быть положительным числом")
result = []
for i in range(n - 1, len(arr), n):
result.append(arr[i])
return result
@staticmethod
def extract_with_filter(arr: list, n: int) -> list:
"""Извлечение через фильтрацию."""
if n <= 0:
raise ValueError("N должно быть положительным числом")
return [val for idx, val in enumerate(arr, start=1) if idx % n == 0]
Примеры использования
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(get_every_nth_element(arr, 3)) # [3, 6, 9]
print(NthElementExtractor.extract_iterative(arr, 3)) # [3, 6, 9]
print(NthElementExtractor.extract_with_filter(arr, 3)) # [3, 6, 9]
Ключевые моменты
Подходы:
- Срезы
[n-1::n]— O(1), оптимизированный встроенный механизм Python - Итеративный цикл — O(n) с явным управлением индексом
- Фильтрация enumerate — O(n) с условием
Важные детали:
- N должно быть положительным
- Индекс N-го элемента = N-1 (нулевая индексация)
- Срезы работают с шагом N начиная с индекса N-1
- Пустые массивы обрабатываются корректно
Граничные случаи для тестирования:
- N = 1 (все элементы)
- N больше длины массива
- Пустой массив
- Отрицательное N (ошибка)
- N = 0 (ошибка)