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.
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