Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Aproveitando Map() e Compreensões de Listas | Aperfeiçoando o Desempenho com Ferramentas Integradas
Técnicas de Otimização em Python

bookAproveitando Map() e Compreensões de Listas

Sempre que possível, é preferível utilizar funções, métodos ou funções de biblioteca embutidas em vez de criar algoritmos do zero. Funções embutidas e de biblioteca geralmente são otimizadas para desempenho, executam de forma mais eficiente e são projetadas para lidar com uma ampla variedade de casos extremos de maneira eficaz.

Vamos começar com ferramentas poderosas como a função map() e compreensões de listas, que podem acelerar significativamente seu código. Como as compreensões de listas são mais otimizadas para desempenho e map() é implementada em C, geralmente executam mais rápido do que laços escritos manualmente.

Compreensões de Lista

Compreensões de lista oferecem uma forma mais concisa e frequentemente mais rápida de criar listas em comparação com laços for tradicionais. Além disso, podem tornar seu código mais fácil de ler e entender.

Vamos comparar o desempenho de um laço for e de uma compreensão de lista ao gerar uma lista onde cada número de 1 a 10000000 é multiplicado por 2:

123456789101112131415161718192021
import os os.system('wget https://staging-content-media-cdn.codefinity.com/courses/8d21890f-d960-4129-bc88-096e24211d53/section_1/chapter_3/decorators.py 2>/dev/null') from decorators import timeit_decorator numbers = list(range(1, 10000001)) @timeit_decorator(number=3) def list_comprehension(): return [x * 2 for x in numbers] @timeit_decorator(number=3) def for_loop(): result = [] for x in numbers: result.append(x * 2) return result list_1 = list_comprehension() list_2 = for_loop() print(list_1 == list_2)
copy

Usando map()

A função map aplica uma função especificada a cada item em um iterável (por exemplo, uma lista).

Além de ser mais concisa do que escrever laços, geralmente é mais rápida devido às otimizações em nível C em sua implementação, o que reduz a sobrecarga de chamadas de função repetidas.

Embora map possa oferecer alguns benefícios de desempenho, especialmente ao trabalhar com funções embutidas, a diferença de velocidade em relação às compreensões de listas geralmente é insignificante. Ambas são altamente otimizadas e, para operações simples, a vantagem de desempenho do map é quase imperceptível. Na prática, a escolha entre as duas deve ser baseada mais na legibilidade e em casos de uso específicos, como eficiência de memória com map.

Vamos comparar o desempenho de map, laços for e compreensões de listas ao formatar 1000000 nomes de clientes para o formato title case (por exemplo, 'john doe' -> 'John Doe'):

1234567891011121314151617181920212223242526
import os os.system('wget https://staging-content-media-cdn.codefinity.com/courses/8d21890f-d960-4129-bc88-096e24211d53/section_1/chapter_3/decorators.py 2>/dev/null') from decorators import timeit_decorator customer_names = ['john doe', 'jane smith', 'alex johnson', 'ivan smith'] * 250000 @timeit_decorator(number=10) def map_function(): return list(map(str.title, customer_names)) @timeit_decorator(number=10) def list_comprehension(): return [name.title() for name in customer_names] @timeit_decorator(number=10) def for_loop(): result = [] for name in customer_names: result.append(name.title()) return result formatted_with_map = map_function() formatted_with_comprehension = list_comprehension() formatted_with_for_loop = for_loop() print(formatted_with_map == formatted_with_comprehension == formatted_with_for_loop)
copy

Como esperado, o loop for é a abordagem mais lenta das três. Neste exemplo, map mostrou-se mais rápido do que a compreensão de listas, embora, na prática, o desempenho possa variar dependendo do caso de uso específico. Às vezes, compreensões de listas podem até superar o map, especialmente para expressões mais simples.

question mark

Qual das seguintes afirmações sobre compreensões de listas e map() está correta?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 1

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain how the timeit_decorator works in these examples?

What are the main advantages of using map over list comprehensions?

When should I choose a for loop instead of map or list comprehensions?

Awesome!

Completion rate improved to 7.69

bookAproveitando Map() e Compreensões de Listas

Deslize para mostrar o menu

Sempre que possível, é preferível utilizar funções, métodos ou funções de biblioteca embutidas em vez de criar algoritmos do zero. Funções embutidas e de biblioteca geralmente são otimizadas para desempenho, executam de forma mais eficiente e são projetadas para lidar com uma ampla variedade de casos extremos de maneira eficaz.

Vamos começar com ferramentas poderosas como a função map() e compreensões de listas, que podem acelerar significativamente seu código. Como as compreensões de listas são mais otimizadas para desempenho e map() é implementada em C, geralmente executam mais rápido do que laços escritos manualmente.

Compreensões de Lista

Compreensões de lista oferecem uma forma mais concisa e frequentemente mais rápida de criar listas em comparação com laços for tradicionais. Além disso, podem tornar seu código mais fácil de ler e entender.

Vamos comparar o desempenho de um laço for e de uma compreensão de lista ao gerar uma lista onde cada número de 1 a 10000000 é multiplicado por 2:

123456789101112131415161718192021
import os os.system('wget https://staging-content-media-cdn.codefinity.com/courses/8d21890f-d960-4129-bc88-096e24211d53/section_1/chapter_3/decorators.py 2>/dev/null') from decorators import timeit_decorator numbers = list(range(1, 10000001)) @timeit_decorator(number=3) def list_comprehension(): return [x * 2 for x in numbers] @timeit_decorator(number=3) def for_loop(): result = [] for x in numbers: result.append(x * 2) return result list_1 = list_comprehension() list_2 = for_loop() print(list_1 == list_2)
copy

Usando map()

A função map aplica uma função especificada a cada item em um iterável (por exemplo, uma lista).

Além de ser mais concisa do que escrever laços, geralmente é mais rápida devido às otimizações em nível C em sua implementação, o que reduz a sobrecarga de chamadas de função repetidas.

Embora map possa oferecer alguns benefícios de desempenho, especialmente ao trabalhar com funções embutidas, a diferença de velocidade em relação às compreensões de listas geralmente é insignificante. Ambas são altamente otimizadas e, para operações simples, a vantagem de desempenho do map é quase imperceptível. Na prática, a escolha entre as duas deve ser baseada mais na legibilidade e em casos de uso específicos, como eficiência de memória com map.

Vamos comparar o desempenho de map, laços for e compreensões de listas ao formatar 1000000 nomes de clientes para o formato title case (por exemplo, 'john doe' -> 'John Doe'):

1234567891011121314151617181920212223242526
import os os.system('wget https://staging-content-media-cdn.codefinity.com/courses/8d21890f-d960-4129-bc88-096e24211d53/section_1/chapter_3/decorators.py 2>/dev/null') from decorators import timeit_decorator customer_names = ['john doe', 'jane smith', 'alex johnson', 'ivan smith'] * 250000 @timeit_decorator(number=10) def map_function(): return list(map(str.title, customer_names)) @timeit_decorator(number=10) def list_comprehension(): return [name.title() for name in customer_names] @timeit_decorator(number=10) def for_loop(): result = [] for name in customer_names: result.append(name.title()) return result formatted_with_map = map_function() formatted_with_comprehension = list_comprehension() formatted_with_for_loop = for_loop() print(formatted_with_map == formatted_with_comprehension == formatted_with_for_loop)
copy

Como esperado, o loop for é a abordagem mais lenta das três. Neste exemplo, map mostrou-se mais rápido do que a compreensão de listas, embora, na prática, o desempenho possa variar dependendo do caso de uso específico. Às vezes, compreensões de listas podem até superar o map, especialmente para expressões mais simples.

question mark

Qual das seguintes afirmações sobre compreensões de listas e map() está correta?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 1
some-alt