Nesta aula estudaremos o ordenamento de lista, a ordem padrão, como inverter a ordem e outras funcionalidades disponibilizadas pela biblioteca padrão do Python. |
INTRODUÇÃO
Ordenar é definir a sequência dos elementos contidos numa lista. Por padrão, todo novo elementos adicionados é incluído no final da lista, logo, seu índice será igual a -1.
As listas são ordenadas das mais diversas formas, como por exemplo, por ordem alfabética. Todo ordenameto é um algoritmo que define a sequência em que os elementos serão dispostos. O Python disponibiliza por padrão, o ordenamento por ordem alfabética através funções incluídas na biblioteca padrão.
Nosso objetivo agora é estudar a função de ordenação disponibilizada nativamente pelo Python.
A DESCRIÇÃO DOS OBJETOS
Em Python, há 2 funções que definem um texto a ser impresso na saída padrão, isto é, se passarmos uma lista com parâmetro da função print()
os elementos serão impressos na saída padrão devido a programação implementada pela classe list
.
Podemos implementar a função __str__() ou então, __repr__() dentro das nossas classes para que as essas retornem qualquer texto que melhor defina o conteúdo do objeto.
Na ordenação, o funcionamento ocorrerá, por padrão, com o uso dessa descrição. Assim, se a classe no qual o objeto foi criado não possuir a implementação dessas funções, não será possível organizar com as funções padrão das bibliotecas.
Por padrão, todas as classes nativas trazem essas funções implementadas.
A FUNÇÃO sort()
A função sort() ordena os elementos alfabeticamente. Como estudado acima, o texto utilizado por padrão, será aquele retornado pelas funções que descrevem o conteúdo dos objetos.
A seguir, vamos definir uma lista e então, com a função sort()
, iremos ordenar os elementos.
#coding: utf-8
>>> x = ["d", "a", "c", "b", ]
>>> x
["d", "a", "c", "b", ]
>>> lista.sort()
["a", "b", "c", "d"]
Como pode ser visto, inicialmente, a lista foi impressa seguindo a ordem em que definimos os elementos ainda na declaração. Em seguida, invocamos a função sort() e então, a lista foi impressa com os elementos ordenados alfabeticamente.
ORDEM INVERSA
Para invertermos a sequência, isto é, para que o últimos seja o primeiro e o primeiro o último, passamos como argumento da função sort() reverse=True. O parâmetro reverse como podemos deduzir, informa que queremos a ordem alfabética normal quando igual a True
ou então, a ordem reversa quando igual True
.
#coding: utf-8
>>> x = ["d", "a", "c", "b", ]
>>> x
["d", "a", "c", "b", ]
>>> lista.sort(reverse=True)
['d', 'c', 'b', 'a']
Como podemos ver, os itens foram impressos ordenamente na ordem reversa.
A FUNÇÃO reverse()
A função reverse()
inverte a ordem da lista mas sem ordena-la, ou seja, a ordem em que os elementos estão dispostos é indiferente, o que importa, é fazer com que o último seja o primeiro e vice-e-versa.
Vamos definir uma lista numérica e em seguida, invocar a função reverse()
.
#coding: utf-8
>>> l = [10, 4, 7, 123, 45, 234]
>>> l
[10, 4, 7, 123, 45, 234]
>>> l.reverse()
>>> l
[234, 45, 123, 7, 4, 10]
No código acima, definimos uma lista e vinculamos a referência x à mesma. Feito isso, invocamos a função reverse()
e então, imprimimos novamente os elementos. Desta vez, a impressão ocorreu na ordem inversa a ordem em que os elementos foram adicionados. Isso porque, a função reverse()
havia sido invocada.
COMO A INVERSÃO OCORRE INTERNAMENTE
O Python sempre busca a forma de trabalho menos custoza, isto é, a mais performática. Por isso, ao invocarmos a função reverse()
, ou então, ao ordenarmos inversamente os elementos, internamente, somente um propriedade é alterada, sem que nenhum elemento seja movido.
Isso é possível pelo fato das listas serem objetos iteraveis, definição está que permite-nos entregar os elementos da forma como bem entendermos. Assim, não podemos ver uma lista como sendo um Array em C, até porque, em Python, sempre é feito o mínimo necessário, utilizando desta maneira, a menor quantidade de memória e distribuindo o processamento.
Tags curso, python, lista, ordenação, blog
Comentários
comments powered by Disqus