Neste artigo, vamos explorar as diversas abordagens para determinar o tamanho de uma lista em Python, detalhando cada método e identificando o mais eficiente.
O que são Listas em Python?
Em Python, uma lista é uma coleção de itens, também conhecida como array, que tem a capacidade de armazenar múltiplos tipos de dados. Uma única lista pode conter inteiros, números de ponto flutuante, strings, valores booleanos e até mesmo outras listas aninhadas.
int_list = [1, 2, 3, 4, 5] print(int_list) # Saída: [1, 2, 3, 4, 5] float_list = [1.1, 2.2, 3.3, 4.4, 5.5] print(float_list) # Saída: [1.1, 2.2, 3.3, 4.4, 5.5] string_list = ['Geekflare', 'Cloudflare', 'Amazon'] print(string_list) # Saída: ['Geekflare', 'Cloudflare', 'Amazon'] boolean_list = [True, False] print(boolean_list) # Saída: [True, False] nested_list = [[1, 2], [1.1, 2.2], ['Geekflare', 'Cloudflare'], [True, False]] print(nested_list) # Saída: [[1, 2], [1.1, 2.2], ['Geekflare', 'Cloudflare'], [True, False]] different_datatype_list = [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]] print(different_datatype_list) # Saída: [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]]
As listas podem ser criadas utilizando colchetes ou através da função construtora `list()`.
square_bracket_list = [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]] print(square_bracket_list) # Saída: [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]] constructor_list = list((1, 1.1, 'etechpt.com', True, [1, 1.1, 'Geekflare', True])) print(constructor_list) # Saída: [1, 1.1, 'etechpt.com', True, [1, 1.1, 'Geekflare', True]]
Ambas as abordagens produzem o mesmo resultado. As listas em Python são mutáveis, permitindo elementos duplicados e acessíveis através de seus índices.
Maneiras de Descobrir o Tamanho de uma Lista
- Usando a função embutida
len()
. - Através do método
length_hint
do módulooperator
. - Criando uma função personalizada com um contador.
Método 1: Função Embutida len()
A função len()
é uma ferramenta nativa de Python utilizada para obter o comprimento de diversas coleções de dados, como listas, conjuntos, tuplas e dicionários.
languages = ['Python', 'Java', 'C++', 'PHP', 'nodeJS'] languages_length = len(languages) print('O comprimento da lista de linguagens é:', languages_length)
Resultado:
O comprimento da lista de linguagens é: 5
Certifique-se de ter o Python instalado ou utilize um compilador online para praticar o código.
Método 2: Método length_hint
do Módulo operator
O length_hint
é uma função do módulo operator
, que retorna um valor estimado do tamanho de um objeto iterável, como listas, conjuntos, tuplas e dicionários. Diferentemente de outras operações embutidas, ele precisa ser importado.
import operator languages = ['Python', 'Java', 'C++', 'PHP', 'nodeJS'] languages_length = operator.length_hint(languages) print('O comprimento da lista de linguagens usando operator é:', languages_length)
Resultado:
O comprimento da lista de linguagens usando operator é: 5
Método 3: Função Personalizada com Contador
Nesta abordagem, empregamos um método tradicional utilizando um loop for
e um contador para determinar o comprimento da lista.
Para isso, criamos uma função que aceita uma lista ou qualquer iterável como entrada e retorna o seu comprimento.
def iterable_count(iterable): length = 0 for item in iterable: length += 1 return length
def iterable_count(iterable): length = 0 for item in iterable: length+=1 return length languages = ['Python', 'Java', 'C++', 'PHP', 'nodeJS'] languages_length = iterable_count(languages) print('O comprimento da lista de linguagens usando função personalizada é:', languages_length)
Resultado:
O comprimento da lista de linguagens usando função personalizada é: 5
Análise Comparativa dos 3 Métodos
Análise de desempenho para listas grandes:
import timeit import operator def iterable_count(iterable): length = 0 for item in iterable: length += 1 return length integer_list = list(range(1, 9999999)) # Verificação do comprimento usando len() start_time = timeit.default_timer() len_length = len(integer_list) print(timeit.default_timer() - start_time, 'Comprimento da lista de inteiros usando len():', len_length) # Verificação do comprimento usando operator.length_hint start_time = timeit.default_timer() len_length = operator.length_hint(integer_list) print(timeit.default_timer() - start_time, 'Comprimento da lista de inteiros usando length_hint:', len_length) start_time = timeit.default_timer() iterable_count_length = iterable_count(integer_list) print(timeit.default_timer() - start_time, 'Comprimento da lista de inteiros usando função personalizada:', iterable_count_length)
Resultado:
3.957189619541168e-06 Comprimento da lista de inteiros usando len(): 9999998 3.0621886253356934e-06 Comprimento da lista de inteiros usando length_hint: 9999998 0.4059128537774086 Comprimento da lista de inteiros usando função personalizada: 9999998
Como podemos observar, length_hint
demonstra ser o mais rápido (3.0621886253356934e-06) ao lidar com grandes conjuntos de dados, na ordem de milhões de itens. Isso se deve ao fato de length_hint
ser utilizado pelo runtime CPython, sendo essencialmente um wrapper em Python.
Análise de desempenho para listas pequenas:
import timeit import operator def iterable_count(iterable): length = 0 for item in iterable: length += 1 return length integer_list = list(range(1, 100)) # Verificação do comprimento usando len() start_time = timeit.default_timer() len_length = len(integer_list) print(timeit.default_timer() - start_time, 'Comprimento da lista de inteiros usando len():', len_length) # Verificação do comprimento usando operator.length_hint start_time = timeit.default_timer() len_length = operator.length_hint(integer_list) print(timeit.default_timer() - start_time, 'Comprimento da lista de inteiros usando length_hint:', len_length) start_time = timeit.default_timer() iterable_count_length = iterable_count(integer_list) print(timeit.default_timer() - start_time, 'Comprimento da lista de inteiros usando função personalizada:', iterable_count_length)
Resultado:
7.813796401023865e-07 Comprimento da lista de inteiros usando len(): 99 1.1278316378593445e-06 Comprimento da lista de inteiros usando length_hint: 99 3.462657332420349e-06 Comprimento da lista de inteiros usando função personalizada: 99
Conforme evidenciado, len()
apresenta um desempenho superior (7.813796401023865e-07) quando a lista possui milhares de itens ou menos.
Em ambos os cenários, a função personalizada com contador demonstra ser menos eficiente em termos de velocidade comparada aos dois outros métodos.
Conclusão
Neste artigo, exploramos diferentes abordagens para determinar o tamanho de uma lista em Python, e comparamos a eficiência de cada um deles.