"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como gerar uma nova lista com cada enésimo item de uma lista original?

Como gerar uma nova lista com cada enésimo item de uma lista original?

Publicado em 2024-11-08
Navegar:917

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

Crie uma lista com cada enésimo item de uma lista original

Na análise de dados ou programação, muitas vezes é necessário trabalhar com um subconjunto de uma lista. Uma tarefa comum é criar uma nova lista contendo apenas cada enésimo item da lista original. Por exemplo, dada uma lista de números inteiros de 0 a 1000, como podemos obter uma lista que inclua apenas o primeiro e todos os décimos itens subsequentes?

Usando um loop for tradicional, podemos realizar esta tarefa da seguinte maneira:

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

No entanto, uma abordagem mais concisa e eficiente está disponível usando o fatiamento do Python:

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

Nesta solução, a expressão xs[0::10] cria uma nova lista que inclui cada 10º item a partir do índice 0. O resultado é uma lista contendo [0 , 10, 20, 30, ..., 1000] sem a necessidade de loop ou verificações condicionais.

Este método é significativamente mais rápido que a abordagem de loop for, provando vantajoso ao lidar com listas grandes. Conforme demonstrado pela seguinte comparação de tempo:

$ 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

Essa abordagem otimizada usando fatiamento oferece simplicidade e vantagens de desempenho para criar novas listas com cada enésimo item de uma lista original.

Declaração de lançamento Este artigo foi reimpresso em: 1729392499 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3