Ir para o conteúdo
MacgyverPT

[Resolvido] Ordenar dados na lista (de trás para frente)

Mensagens Recomendadas

MacgyverPT    1
MacgyverPT

Boas pessoal,

Neste dias como tenho andado sem nada para fazer, decidi agarrar no Python e ver como era esta linguagem de programaçao, já que todos dizem que é X, Y e Z mas nada como ver com os "próprios olhos" e tirar as suas conclusões...

Então a minha dúvida é a seguinte:

Estava aqui a fazer um simples programa e há medida que o programa vai "andando" vou guardando os resultados numa lista, o meu problema é como ordenar os dados do último para o primeiro...

Imaginando isto como resultado:

lista=[2, 5, 10, 7]

Eu queria colocar a lista da seguinte ordem:

lista=[7. 10, 5, 2]

Já andei às voltas, já pesquisei no nosso amigo Google e não achei a solução para isto (devo ter feiro mal a pesquisa :( )... E como tal, vinha aqui pedir a vossa ajuda.

Cump,

M.offspring.R

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrosorio    5
pedrosorio

Dando uma vista de olhos rápida ao manual (ao tutorial mais especificamente) aqui está uma maneira "porca" de o fazer:

b=[]
for x in a:
   b[:0]=[x]
a=b

Ou então usar funções já definidas para as listas...  :(

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrosorio    5
pedrosorio

Como é que funcionam os :: Betovsky?

Acho que já percebi, [::n] devolve todos os elementos da lista de n em n, se for negativo começa a contar do fim.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

Como é que funcionam os :: Betovsky?

Acho que já percebi, [::n] devolve todos os elementos da lista de n em n, se for negativo começa a contar do fim.

Exacto...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

O que o Betovsky usou chama-se slicing, e funciona para qualquer elemento iterável.

var[inicio do corte:quantos se pode cortar:de quantos em quantos se anda de cada vez]

Quando se omite o inicio do corte, ele assume 0. Quando se omite quantos se pode cortar, ele assume len(lista). Quando se omite de quantos em quantos se anda de cada vez, ele assume 1. Quando o valor de quantos em quantos se anda de cada vez é negativo, a lista é percorrida não a partir do 0, mas sim do len(lista)-1.

Exemplos:

>>> a = [1,2,3,4,5,6,7]
>>> a[0]
1
>>> a[0:7]
[1, 2, 3, 4, 5, 6, 7]
>>> a[0:6]
[1, 2, 3, 4, 5, 6]
>>> a[0:]
[1, 2, 3, 4, 5, 6, 7]
>>> a[0:6:]
[1, 2, 3, 4, 5, 6]
>>> a[0:6:3]
[1, 4]
>>> a[0:6:2]
[1, 3, 5]
>>> a[0:6:1]
[1, 2, 3, 4, 5, 6]
>>> a[:6:1]
[1, 2, 3, 4, 5, 6]
>>> a[:-1:1]
[1, 2, 3, 4, 5, 6]
>>> a[::-1]
[7, 6, 5, 4, 3, 2, 1]

EDIT (JoaoRodrigues):

http://www.portugal-a-programar.pt/forums/topic/0-find-topic/?do=findComment&comment=131451

http://wiki.portugal-a-programar.pt/dev_geral:python:slicing

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade