As listas Python são uma estrutura de dados fundamental, essencial para armazenar e manipular coleções de itens. Sua flexibilidade e facilidade de uso os tornam indispensáveis em uma ampla gama de tarefas de programação, desde a análise de dados até o desenvolvimento da Web. Devido ao seu uso generalizado, um requisito comum que surge é determinar o tamanho de uma lista. Embora a função len() seja amplamente conhecida, a sintaxe rica do Python e o suporte da biblioteca oferecem várias outras maneiras de fazer isso, cada uma com suas próprias nuances e aplicações. Este artigo analisa oito desses métodos, fornecendo insights sobre seu funcionamento e eficiência.
Por que as listas Python são importantes?
As listas em Python são matrizes dinâmicas que podem conter uma mistura de tipos de dados, oferecendo uma ferramenta versátil para armazenamento e manipulação de dados. Eles facilitam operações como iteração, divisão e manipulações abrangentes com métodos incorporados como append(), remove() e sort(), entre outros. Você pode ler mais sobre manipulações de listas neste tutorial.
Como definir uma lista em Python
Para os fins deste tutorial, usaremos uma lista simples para demonstrar cada método. Considere a lista my_list, definida da seguinte forma:
# Define a sample list to be used throughout the tutorial
my_list =["I","Love","Learning","Python"]Tecnologia
Essa lista, embora simples, serve como um candidato perfeito para ilustrar várias técnicas para determinar seu comprimento.
8 maneiras de encontrar o tamanho da lista Python
1. Encontre o tamanho de uma lista usando o len() Função
A função len() é a abordagem mais direta para você determinar o tamanho de uma lista. Ele não é apenas conciso, mas também altamente eficiente, o que o torna o método preferido na maioria dos casos.
# Use len() to find the size of the list
length =len(my_list)print(length)# Output: 4Tecnologia
2. Localizar o tamanho de uma lista usando um loop For
Chamada de método ingênuo, essa abordagem envolve a inicialização de um contador e seu incremento para cada elemento encontrado em um loop for na lista. Você pode saber mais sobre loops for e outros tipos de loops neste tutorial.
# Naive method using a for loop to count the list's size
counter =0for item in my_list:
counter +=1print(counter)# Output: 4Tecnologia
3. Descubra o tamanho de uma lista usando uma compreensão de lista
As compreensões de lista em Python oferecem uma sintaxe compacta para realizar operações em uma lista. Aqui, nós a usamos junto com a função sum() para contar os elementos.
# Using list comprehension to count the list's size
length =sum([1for item in my_list])print(length)# Output: 4Tecnologia
4. Encontrar o tamanho de uma lista usando reduce()
A função reduce() é um pouco mais avançada, mas muito poderosa. Aplica uma função de dois argumentos cumulativamente aos itens de uma lista, da esquerda para a direita, de modo a reduzir a lista a um único valor. Para nossa finalidade, vamos usá-lo para contar o número de itens em uma lista.
Para facilitar a compreensão, vamos dividi-lo em duas partes:
Defina uma função simples: Primeiro, definiremos uma função simples que recebe dois argumentos: a contagem atual (que chamaremos de count_so_far) e um item individual da lista (que chamaremos de _ para indicar que não usaremos esse item).
Use reduce(): Em seguida, usaremos o site reduce() para aplicar essa função a cada item da lista, contando efetivamente os itens à medida que você avança.
# Import the reduce function from the functools modulefrom functools importreduce# Define a simple function to use with reducedefupdate_count(count_so_far, _):"""Increases the count by 1. The second parameter is not used."""return count_so_far +1# Use reduce to count the items in the list# We start counting from 0, which is why we have '0' at the end
list_length =reduce(update_count, my_list,0)# Print out the resultprint(list_length)# Output will be 4Tecnologia
5. Encontrar o tamanho de uma lista usando iter() e next()
Para que você entenda como contar os elementos de uma lista usando iter() e next(), é necessário familiarizar-se com os iteradores. Um iterador é um objeto em Python que nos permite percorrer todos os elementos de uma lista um a um. A função iter() transforma uma lista em um iterador, e a função next() passa para o próximo elemento no iterador.
Aqui está um detalhamento passo a passo:
Crie um Iterador: Começamos transformando nossa lista em um iterador usando a função iter(). Isso nos permite examinar a lista um item de cada vez.
Contagem usando um loop: Configuramos um loop que continuará sendo executado até que não haja mais itens na lista. Dentro do loop, usamos a função next() para passar para o próximo item da lista. Cada vez que passamos com sucesso para o próximo item, aumentamos nossa contagem em 1.
Lidar com o fim da lista: Eventualmente, chegaremos ao final da lista. Quando isso acontecer, o site next() causará um erro StopIteration, indicando que não há mais itens. Capturamos esse erro com um bloco try e except e paramos de contar.
Aqui está o código simplificado com comentários para ajudar você a entender cada etapa:
# Step 1: Turn the list into an iterator
list_iterator =iter(my_list)# Initialize a counter to keep track of the number of items
count =0# Step 2: Loop through the list using the iteratorwhileTrue:try:# Use next() to get the next item from the iteratornext(list_iterator)# If next() was successful, increase the count
count +=1except StopIteration:# Step 3: If we reach the end of the list, break out of the loopbreak# Print out the total count of items in the listprint(count)# Output will be 4Tecnologia
6. Encontrar o tamanho de uma lista usando enumerate()
A função enumerate() em Python adiciona um contador a um iterável e o retorna na forma de um objeto enumerado. Essa função é comumente usada em loops para obter o índice e o valor de cada item da lista. Embora o enumerate() não seja normalmente usado para encontrar o tamanho de uma lista, podemos usá-lo para ilustrar como o Python pode ser flexível.
# Step 1: Enumerate the list and convert it to a list of tuples (index, element)
enumerated_list =list(enumerate(my_list))# Step 2: Extract the last tuple (which contains the last index and the last element)
last_tuple = enumerated_list[-1]# Step 3: The size of the list is the last index plus 1 (because of zero-based indexing)
list_size = last_tuple[0]+1# Print out the size of the listprint(list_size)# Output will be 4Tecnologia
7. Encontre o tamanho de uma lista usando o NumPy
O NumPy é uma biblioteca avançada em Python que é amplamente usada no campo da computação científica. Ele oferece suporte a matrizes e arrays grandes e multidimensionais, além de uma coleção de funções matemáticas para operar nesses arrays. Para quem trabalha com dados numéricos, o NumPy é uma ferramenta indispensável, oferecendo armazenamento e operações eficientes em grandes conjuntos de dados. Para descobrir o tamanho de uma lista em Python usando NumPy, podemos usar o atributo .size, conforme mostrado abaixo.
# Import the NumPy libraryimport numpy as np
# Step 1: Convert the list into a NumPy array
my_array = np.array(my_list)# Step 2: Use the 'size' attribute of the NumPy array to find its size
array_size = my_array.size
# Print out the size of the array (which is the same as the length of the list)print(array_size)# Output will be 4Tecnologia
8. Encontrar o tamanho de uma lista usando map() e sum()
Semelhante à compreensão de lista, esse método usa map() para aplicar uma função que retorna 1 para cada elemento, com sum() e, em seguida, agrega esses valores para contar os elementos. Esse método requer que você esteja familiarizado com as funções lambda em Python. Para se familiarizar com o assunto, não deixe de conferir este tutorial de lambda em Python.
# Using map() and sum() to count the list's size
length =sum(map(lambda x:1, my_list))print(length)# Output: 4Tecnologia
Comparação do desempenho de diferentes métodos de tamanho de lista do Python
Uma coisa é você conhecer todos os oito métodos para encontrar o tamanho das listas, mas outra coisa é usar o melhor método. Para comparar o desempenho dos oito métodos discutidos, usaremos o módulo timeit do Python, que oferece uma maneira simples de cronometrar pequenas partes do código Python. Isso nos dará uma ideia clara de como cada método se comporta em termos de velocidade de execução. Observe que os tempos de execução podem ser diferentes dependendo do seu computador ou do local onde você executa o código.
Configuração do experimento
Para facilitar as coisas para você, definimos nossa lista e as funções para cada método. Não há problema se você não estiver familiarizado com as funções; tudo o que estamos fazendo aqui é sistematizar os diferentes métodos para facilitar a comparação.
import timeit
from functools importreduceimport numpy as np
# Define the list
my_list =["I","Love","Learning","Python"]*100# Increased size for better statistical signifcance# Method 1: Using len()defmethod_len():returnlen(my_list)# Method 2: Looping through the listdefmethod_loop():
counter =0for _ in my_list:
counter +=1return counter
# Method 3: Using a list comprehensiondefmethod_list_comprehension():returnsum([1for _ in my_list])# Method 4: Using reduce()defmethod_reduce():returnreduce(lambda acc,_: acc +1, my_list,0)# Method 5: Using iter() and next()defmethod_iter_next():
iterator =iter(my_list)
counter =0whileTrue:try:next(iterator)
counter +=1except StopIteration:breakreturn counter
# Method 6: Using enumerate()defmethod_enumerate():returnmax(enumerate(my_list,1))[0]# Method 7: Using numpydefmethod_numpy():
np_array = np.array(my_list)return np_array.size
# Method 8: Using map() and sum()defmethod_map_sum():returnsum(map(lambda_:1, my_list))Tecnologia
Cronograma de cada método
Em seguida, usaremos o site timeit.timeit() para cronometrar cada função de acordo com a ordem especificada:
# List to hold method names and their execution times
timing_results =[]
methods =[method_len, method_loop, method_list_comprehension, method_reduce,
method_iter_next, method_enumerate, method_numpy, method_map_sum]# Time each methodfor method in methods:# Execute the operation 100000 times for better statistical significance
time_taken = timeit.timeit(method, number=100000)
timing_results.append((method.__name__, time_taken))# Sort results by time taken for better readability
timing_results.sort(key=lambda x: x[1])# Print the timing resultsfor method_name, time_taken in timing_results:print(f"{method_name}: {time_taken:.5f} seconds")Tecnologia
Ao executar isso no DataLab, recebemos os seguintes resultados:
Método
Tempo gasto
O método len()
0,03410 segundos
O método de compreensão de lista
1,50325 segundos
O método de loop for
1,93764 segundos
O método enumerate()
2,26446 segundos
O método map() e sum()
2,41315 segundos
O método iter() e next()
3,08434 segundos
O método reduce()
4,41239 segundos
O método numpy
10,61716 segundos
Conclusão
Concluindo, essa exploração de vários métodos para encontrar o tamanho de uma lista em Python não só demonstrou a versatilidade e o poder do Python como linguagem de programação, mas também destacou a importância de compreender a eficiência e a aplicabilidade de diferentes abordagens.
Para iniciantes, é fundamental começar com os métodos mais diretos e eficientes, como o uso da função len() incorporada, que é otimizada para desempenho e legibilidade. Para saber mais sobre como trabalhar com listas, confira os seguintes recursos:
Adel é educador de ciência de dados, palestrante e evangelista da DataCamp, onde lançou vários cursos e treinamentos ao vivo sobre análise de dados, aprendizado de máquina e engenharia de dados. Ele é apaixonado pela disseminação das habilidades e da alfabetização de dados nas organizações e pela interseção entre tecnologia e sociedade. Ele tem um mestrado em ciência de dados e análise de negócios. Em seu tempo livre, você pode encontrá-lo passeando com seu gato Louis.
Aprenda a dividir listas Python com técnicas como slicing, compreensão de listas e itertools. Descubra quando usar cada método para um tratamento ideal dos dados.
Desde o teste de código e a implementação do controle de versão até a raspagem da Web e o desenvolvimento de pacotes, dê o próximo passo na sua jornada de desenvolvedor Python!
As listas Python são uma estrutura de dados fundamental, essencial para armazenar e manipular coleções de itens. Sua flexibilidade e facilidade de uso os tornam indispensáveis em uma ampla gama de tarefas de programação, desde a análise de dados até o desenvolvimento da Web. Devido ao seu uso generalizado, um requisito comum que surge é determinar o tamanho de uma lista. Embora a função len() seja amplamente conhecida, a sintaxe rica do Python e o suporte da biblioteca oferecem várias outras maneiras de fazer isso, cada uma com suas próprias nuances e aplicações. Este artigo analisa oito desses métodos, fornecendo insights sobre seu funcionamento e eficiência.
Por que as listas Python são importantes?
As listas em Python são matrizes dinâmicas que podem conter uma mistura de tipos de dados, oferecendo uma ferramenta versátil para armazenamento e manipulação de dados. Eles facilitam operações como iteração, divisão e manipulações abrangentes com métodos incorporados como append(), remove() e sort(), entre outros. Você pode ler mais sobre manipulações de listas neste tutorial.
Como definir uma lista em Python
Para os fins deste tutorial, usaremos uma lista simples para demonstrar cada método. Considere a lista
my_list, definida da seguinte forma:Essa lista, embora simples, serve como um candidato perfeito para ilustrar várias técnicas para determinar seu comprimento.
8 maneiras de encontrar o tamanho da lista Python
1. Encontre o tamanho de uma lista usando o
len()FunçãoA função
len()é a abordagem mais direta para você determinar o tamanho de uma lista. Ele não é apenas conciso, mas também altamente eficiente, o que o torna o método preferido na maioria dos casos.2. Localizar o tamanho de uma lista usando um loop For
Chamada de método ingênuo, essa abordagem envolve a inicialização de um contador e seu incremento para cada elemento encontrado em um loop for na lista. Você pode saber mais sobre loops for e outros tipos de loops neste tutorial.
3. Descubra o tamanho de uma lista usando uma compreensão de lista
As compreensões de lista em Python oferecem uma sintaxe compacta para realizar operações em uma lista. Aqui, nós a usamos junto com a função
sum()para contar os elementos.4. Encontrar o tamanho de uma lista usando
reduce()A função
reduce()é um pouco mais avançada, mas muito poderosa. Aplica uma função de dois argumentos cumulativamente aos itens de uma lista, da esquerda para a direita, de modo a reduzir a lista a um único valor. Para nossa finalidade, vamos usá-lo para contar o número de itens em uma lista.Para facilitar a compreensão, vamos dividi-lo em duas partes:
count_so_far) e um item individual da lista (que chamaremos de_para indicar que não usaremos esse item).reduce(): Em seguida, usaremos o sitereduce()para aplicar essa função a cada item da lista, contando efetivamente os itens à medida que você avança.5. Encontrar o tamanho de uma lista usando
iter()enext()Para que você entenda como contar os elementos de uma lista usando
iter()enext(), é necessário familiarizar-se com os iteradores. Um iterador é um objeto em Python que nos permite percorrer todos os elementos de uma lista um a um. A funçãoiter()transforma uma lista em um iterador, e a funçãonext()passa para o próximo elemento no iterador.Aqui está um detalhamento passo a passo:
iter(). Isso nos permite examinar a lista um item de cada vez.next()para passar para o próximo item da lista. Cada vez que passamos com sucesso para o próximo item, aumentamos nossa contagem em 1.next()causará um erroStopIteration, indicando que não há mais itens. Capturamos esse erro com um bloco try e except e paramos de contar.Aqui está o código simplificado com comentários para ajudar você a entender cada etapa:
6. Encontrar o tamanho de uma lista usando enumerate()
A função
enumerate()em Python adiciona um contador a um iterável e o retorna na forma de um objeto enumerado. Essa função é comumente usada em loops para obter o índice e o valor de cada item da lista. Embora oenumerate()não seja normalmente usado para encontrar o tamanho de uma lista, podemos usá-lo para ilustrar como o Python pode ser flexível.7. Encontre o tamanho de uma lista usando o NumPy
O NumPy é uma biblioteca avançada em Python que é amplamente usada no campo da computação científica. Ele oferece suporte a matrizes e arrays grandes e multidimensionais, além de uma coleção de funções matemáticas para operar nesses arrays. Para quem trabalha com dados numéricos, o NumPy é uma ferramenta indispensável, oferecendo armazenamento e operações eficientes em grandes conjuntos de dados. Para descobrir o tamanho de uma lista em Python usando NumPy, podemos usar o atributo
.size, conforme mostrado abaixo.8. Encontrar o tamanho de uma lista usando
map()esum()Semelhante à compreensão de lista, esse método usa
map()para aplicar uma função que retorna 1 para cada elemento, comsum()e, em seguida, agrega esses valores para contar os elementos. Esse método requer que você esteja familiarizado com as funções lambda em Python. Para se familiarizar com o assunto, não deixe de conferir este tutorial de lambda em Python.Comparação do desempenho de diferentes métodos de tamanho de lista do Python
Uma coisa é você conhecer todos os oito métodos para encontrar o tamanho das listas, mas outra coisa é usar o melhor método. Para comparar o desempenho dos oito métodos discutidos, usaremos o módulo
timeitdo Python, que oferece uma maneira simples de cronometrar pequenas partes do código Python. Isso nos dará uma ideia clara de como cada método se comporta em termos de velocidade de execução. Observe que os tempos de execução podem ser diferentes dependendo do seu computador ou do local onde você executa o código.Configuração do experimento
Para facilitar as coisas para você, definimos nossa lista e as funções para cada método. Não há problema se você não estiver familiarizado com as funções; tudo o que estamos fazendo aqui é sistematizar os diferentes métodos para facilitar a comparação.
Cronograma de cada método
Em seguida, usaremos o site
timeit.timeit()para cronometrar cada função de acordo com a ordem especificada:Ao executar isso no DataLab, recebemos os seguintes resultados:
Método
Tempo gasto
O método
len()0,03410 segundos
O método de compreensão de lista
1,50325 segundos
O método de loop for
1,93764 segundos
O método
enumerate()2,26446 segundos
O método
map()esum()2,41315 segundos
O método
iter()enext()3,08434 segundos
O método
reduce()4,41239 segundos
O método numpy
10,61716 segundos
Conclusão
Concluindo, essa exploração de vários métodos para encontrar o tamanho de uma lista em Python não só demonstrou a versatilidade e o poder do Python como linguagem de programação, mas também destacou a importância de compreender a eficiência e a aplicabilidade de diferentes abordagens.
Para iniciantes, é fundamental começar com os métodos mais diretos e eficientes, como o uso da função len() incorporada, que é otimizada para desempenho e legibilidade. Para saber mais sobre como trabalhar com listas, confira os seguintes recursos: