11 de novembro de 2010

Ordenando e embaralhando uma lista

Normalmente precisamos ordenar uma lista
Para isso, o método sort() é muito simples e direto:
>>> lista = ['bbb', 'yyy', 'mmm', 'aaa', 'www', 'ddd']
>>> lista.sort()
>>> print lista
['aaa', 'bbb', 'ddd', 'mmm', 'www', 'yyy']
>>>

Agora imagine que você queira ordenar sua lista pelo tamanho (len()) dos itens:
>>> lista = ['aaaa', 'z', 'bbbbbbbbbb', 'nnn']
>>> def por_tamanho(item):
...   return len(item)
... 
>>> sorted(lista, key=por_tamanho)
['z', 'nnn', 'aaaa', 'bbbbbbbbbb']
>>> 

É importante notar que lista.sort() modifica a lista e sorted() retorna uma nova lista classificada.

Para explorar mais o assunto, leia o manual e esse HowTo Sorting.


E para embaralhar uma lista, como fazer?
Considerando a lista usada no 1º exemplo, faça assim:
>>> import random
>>> random.shuffle(lista)
>>> print lista
['ddd', 'aaa', 'mmm', 'yyy', 'bbb', 'www']

4 comentários:

  1. Se quiser, pode usar uma função lambda para ficar mais sucinto:

    sorted(lista, key=lambda x: len(x))

    ResponderExcluir
  2. Blog muito interessante, adorei! Coloquei você na minha lista de blogs, ok? Meu blog é www.aprendajava.com . Abraços!

    ResponderExcluir
  3. Gostei da dica para embaralhar uma lista! Muito bom o blog.

    ResponderExcluir
  4. Notei agora que para classificar a lista pelo tamanho de cada item, bastaria fazer assim: sorted(lista, key=len)

    ResponderExcluir