• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

UnKnowN

pop() and del

18 mensagens neste tópico

Qual a diferença entre:

>>> x = [1,2,3]
>>> x.pop(0)
1
>>> x
[2, 3]

>>> x = [1,2,3]
>>> del x[0]
>>> x
[2, 3]

Obrigado :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O pop() remove um elemento da lista (nem sempre o último) e retorna o seu valor.

O del é usado para remover qualquer elemento de uma lista (ou de um dicionário) ou mesmo apagar uma variável. Este não retorna o valor e tens de especificar o item que queres remover.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Essa também já sabia... :D Tenho estado ocupado a ler o livro que me arranjaste UnKnowN :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Parece que andamos todos a ler o mesmo livro  :D:P Eu parei no capítulo 5 para fazer umas coisas giras  :biggrin: mais ou menos à 2 semanas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu ainda só vou no capítulo 3 mas está a ser interessante.  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora, se não for indiscrição podiam dizer qual é o livro.  :ipool:

Eu ando a ler o Python Bible, estou a gostar mais do que os da série "In a Nutshell" da O'Reilly.

Ah, e ando a dar uns toques em wxPython, através do site wxPyWiki, nomeadamente deste tutorial.

Cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sobre python estou a ler este que por sinal parece ser muito bom. Sobre wxPython estou a ler este.

Se precisares, manda PM.

P.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O pop() remove um elemento da lista (nem sempre o último) e retorna o seu valor.

O del é usado para remover qualquer elemento de uma lista (ou de um dicionário) ou mesmo apagar uma variável. Este não retorna o valor e tens de especificar o item que queres remover.

Mas então para que é que existe o pop() se o del faz o que este faz e ainda faz mais ? (esta era a minha pergunta inicial mas exprimi-me mal... :-[ )

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O triton pode-me corrigir se estiver engando, mas a princpal vantagem do pop(), é o de retornar um valor, logo:

>>> a=[1,2,3]
>>> a
[1, 2, 3]
>>> b=a.pop(0)
>>> b
1
>>> a
[2, 3]
>>> c= del a[0]
SyntaxError: invalid syntax
>>> 

Quanto ao syntax error, não sei se é devido ao uma má configuração do meu sistema se devido ao facto de del não retornar valor. Mas se for o caso da última, não deveria dar à mesma ficando c = None???

Cumps, P.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Volta a ler no livro a parte sobre o pop(), vem lá a explicar outra razão... push()  [que no python é o .append()]. Com estes dois podem-se criar stacks.

The generally accepted names for the two stack operations (putting things in and taking them out) are push and pop. Python doesn’t have push, but you can use append instead. The pop

and append methods reverse each other’s results, so if you push (or append) the value you just popped, you end up with the same stack.

Using pop, you can implement a common data structure called a stack. A stack like this works just like a stack of plates. You can put plates on top, and you can remove plates from the top. The last one you put into the stack is the first one to be removed. (This principle is called Last-In, First-Out, or LIFO.)

>>> x = [1, 2, 3]
>>> x.append(x.pop())
>>> x
[1, 2, 3]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Volta a ler no livro a parte sobre o pop(), vem lá a explicar outra razão... push()  [que no python é o .append()]. Com estes dois podem-se criar stacks.

The generally accepted names for the two stack operations (putting things in and taking them out) are push and pop. Python doesnt have push, but you can use append instead. The pop

and append methods reverse each others results, so if you push (or append) the value you just popped, you end up with the same stack.

Using pop, you can implement a common data structure called a stack. A stack like this works just like a stack of plates. You can put plates on top, and you can remove plates from the top. The last one you put into the stack is the first one to be removed. (This principle is called Last-In, First-Out, or LIFO.)

>>> x = [1, 2, 3]
>>> x.append(x.pop())
>>> x
[1, 2, 3]

E o que é que os stacks têm de bom ?

E qual a vantagem do .pop() retornar um valor ? no programa isso nao será visto ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a = [1,2,3,4,5,6]

i=0
x=0
while x!=4:
    x=a.pop(i)
    print x

>>> 
1
2
3
4
>>> 

Isto com del a[] não é possível.

Esta é apenas uma vantagem de pop(). Deve haver muitas outras e bem mais complexas, mas para já são certament situação que me ultrapassam. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a = [1,2,3,4,5,6]

i=0
x=0
while x!=4:
    x=a.pop(i)
    print x

>>> 
1
2
3
4
>>> 

Isto com del a[] não é possível.

Esta é apenas uma vantagem de pop(). Deve haver muitas outras e bem mais complexas, mas para já são certament situação que me ultrapassam. ;)

Hmm ok percebi, mas já agr, e entrando 1 bocadito em Off-Topic, podes explicar.me o code que aí puseste ? o que ele faz PASSO-a-PASSO ? Explicando o porquê do resultado final, pk sendo i=0 entao o resultado deveria ser [2,3,4,5,6] pois eliminaria a posição 0 ou seja o nº 1 da lista não ? :S

Obrigado PaLobo :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a = [1,2,3,4,5,6]       #Passo1

i=0                         #Passo 2
x=0                        #Passo 3
while x!=4:              #Passo 4
    x=a.pop(i)           #Passo 5
    print x                #Passo 6

- Passo 1 é simples, é a criação da lista.

- Passo 2 e 3 iniciaçliza duas variáveis. Só depois é que percebi que não precisava da variavel i uma vez que não há iteração, fazemos pop() sempre do zero. (coisa de novato... ;))

- Passo 4 inicio um ciclo / loop que só irá parar quando x=4.

- Passo 5, atribuo a x o valor retornado por pop(i)

- Passo 6 faço print do valor de x para se ver o resultado do pop().

A lista final será [5, 6].

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nao percebo que realção é que o 'x' tem com 'a' e que relação existe com 'i' e com o resto... tipo pkek fika [5,6] ?

como é que o x se torna igual a 4 se o x é 0 ?

And lots os Questions that i cannot explain :|

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

talvez seja mais fácil assim:

Código:

a=[1,2,3,4,5,6]

x=0

while x != 4:
        x = a.pop(0)
        print x
        print a

Output:

pedro@Lobo:~$ python simples.py
1
[2, 3, 4, 5, 6]
2
[3, 4, 5, 6]
3
[4, 5, 6]
4
[5, 6]
pedro@Lobo:~$

Como disse há pouco, o i estava a mais e podiamos fazer o mesmo sem ele. Inicialmente, o x tem o valor de 0, mas como pop() retorna um valor e temos x = a.pop(0), x irá ficar com o valor devolvido pelo pop(). Uma vez que x não é igual a 4, o ciclo repete-se. Desta vez a lista já só é [2,3,4,5,6] logo a.pop(0) irá devolver o valor 2 que ficará associado a x. O ciclo continua assim até x=4 e depois pára. A lista resultante é então [5,6].

0

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