Jump to content

pop() and del


UnKnowN

Recommended Posts

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... ? )

Link to comment
Share on other 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.

Link to comment
Share on other 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]

<3 life

Link to comment
Share on other 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].

Link to comment
Share on other 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].

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.