«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как создать новый список с каждым N-м элементом исходного списка?

Как создать новый список с каждым N-м элементом исходного списка?

Опубликовано 8 ноября 2024 г.
Просматривать:696

How to Generate a New List with Every Nth Item from an Original List?

Создать список с каждым N-м элементом исходного списка

При анализе данных или программировании часто необходимо работать с подмножеством список. Одна из распространенных задач — создать новый список, содержащий только каждый N-й элемент исходного списка. Например, учитывая список целых чисел от 0 до 1000, как мы можем получить список, включающий только первый и каждый последующий 10-й элемент?

Используя традиционный цикл for, мы можем выполнить эту задачу следующим образом:

xs = list(range(1001))
new_list = []
for i, x in enumerate(xs):
    if i % 10 == 0:
        new_list.append(x)

Однако более краткий и эффективный подход доступен с использованием нарезки Python:

>>> xs = list(range(1001))
>>> new_list = xs[0::10]

В этом решении выражение xs[0::10] создает новый список, который включает в себя каждый 10-й элемент, начиная с индекса 0. Результатом является список, содержащий [0 , 10, 20, 30, ..., 1000] без необходимости циклов или условных проверок.

Этот метод значительно быстрее, чем подход цикла for, что оказывается выгодным при работе с большими списками. Как показано следующим сравнением времени:

$ python -m timeit -s "xs = list(range(1000))" "[x for i, x in enumerate(xs) if i % 10 == 0]"
500 loops, best of 5: 476 usec per loop

$ python -m timeit -s "xs = list(range(1000))" "xs[0::10]"
100000 loops, best of 5: 3.32 usec per loop

Этот оптимизированный подход с использованием срезов обеспечивает простоту и преимущества в производительности при создании новых списков с каждым N-м элементом исходного списка.

Заявление о выпуске Эта статья перепечатана по адресу: 1729392499. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3