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 de novembro de 2010

Operador ternário

Para quem não sabe, o operador ternário é assim (em PHP): echo ($a < $b ? 'a é menor' : 'a não é menor');

Em Python, você pode fazer assim: print 'a é menor' if a < b else 'a não é menor'

Porém, eu recomendo que você faça o arroz-com-feijão, que fica muito mais simples de entender:
>>> if a < b:
...     print 'a é menor'
... else:
...     print 'a não é menor'

Lembre-se que simples é melhor do que complexo.