Ir ao conteúdo
  • Cadastre-se

Python Diferença entre append e extend


Ir à solução Resolvido por Swalls,

Posts recomendados

Bom dia,

 

Estou começando a aprender python, por videos no ytb e depois pular para alguma aula mais aprofundada. E na questão que estou fazendo(ja resolvi aproposito ) utilizei append na primeira tentativa e percebi que o codigo não intepretava corretamente.

Creio eu que o que tava dando errado era que o apeend subia as informações com [x,y,z,p] e na hora de randonizar um valor sempre retornava tudo ao invés de so o valor randonizado.Até consegui com append so que rodando o ramdom 2x.

Com o extend ele não levava esse [], apenas as informações, ai que acredito que estava o erro.

 

Bem acho que ficou um pouco confuso, vou deixar o codigo abaixo:

import random

nome = []
nome1 = str(input('Digite o nome do primeiro aluno: '))
nome2 = str(input('Digite o nome do segundo aluno: '))
nome3 = str(input('Digite o nome do terceiro aluno: '))
nome4 = str(input('Digite o nome do quarto aluno: '))
nomes = [nome1,nome2,nome3,nome4]
nome.extend(nomes)
#sorteado = random.choice(nome)
print (f'{random.choice(nome)}')

Python 3.8.10,pycharm (versão antiga pois nessa maquina ta com w7)

 

Agora depois dessa confusao toda aí heh, Qual a diferença entre os 2 e quando usar um ou outro na pratica?

image.png

image.png

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Solução

@FudoYusei o append adiciona um objeto para a lista (na vdd ele envia o "endereço de objeto", nesse caso, a outra lista) e o extend faz o que ele diz, estende a lista, ou seja, pega os "endereços" que um objeto possui e taca no outro.

 

append de [a,b,c,d] com [x,y]

[a,b,c,d,[x,y]]

nmnmj3S.png

ou seja, [x,y] é o item no index 4, criando uma matriz.

.

extend de [a,b,c,d] com [x,y]

[a,b,c,d,x,y]

 

 

Um cara, que por sinal sou muito grato, me ajudou a entender realmente essas coisa de listas e objetos, o @Kamuri.

outra dúvida que você pode ter: link

  • Curtir 2
  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

Opa valeu, acho que peguei a ideia.

 

Desculpem a falta de retorno o email não notificou 😐

 

@Swalls no seu post foi muito mais longe kkk, mas ja complementa um pouco apesar de ter ficado um pouco confuso kkkk

 

@devair1010 o codigo era so aquilo mesmo kkk, mas eu ate testei aqui e foi, então não entendi muito bem,  pois era so para randomizar um dos 4 nomes de Alunos e mostrar quem foi sorteado.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@FudoYusei ficou confuso? Lá vai o textão.

-pense que tudo em python é um objeto.

-qualquer objeto, seja em código seja na "vida real", possui suas caracteristicas.

 

Uma pedra, por exemplo, tem sua forma, cor, composição e é da classe das pedras, certo?

 

- um numero qualquer, seila, um 4.. é um objeto , normalmente fará parte da classe int (por simbolizar um decimal inteiro) e possui várias caracteríscas.

 

Uma lista não é diferente.. é um objeto também, é de uma classe list e tem muitas outras características. Mas sua função principal não é representar um número decimal igual o objeto 4 e sim guardar uma forma de ir em outros objetos.

O append(), por exemplo, é uma das caracteristicas dos objetos da classe list. Como ele pratica uma ação vai receber outro nome, método (por ex um personagem de jogo tem seus status e suas skills).

 

o append pega o item que você der para inserir no fim da lista, ou seja,você pode dizer por cima que ele busca uma forma de adicionar o endereço desse item no fim da lista para, quando o index for chamado, ir até ele.

Por isso, se você mostrar uma outra lista para o append, ele vai tratar como um objeto qualquer e pegar seu endereço e por lá.

 

Link para o comentário
Compartilhar em outros sites

@FudoYusei a lista não guarda o/os itens.

Em python, Listas são objetos que guardam referências para o item, como se cada index fosse uma seta para um item (se você for estudar ponteiros um dia, de nada).

Por exemplo, Crie duas listas:

a = [1,2,3]

b = [3,2,1]

A função ID() te devolve uma propriedade de qualquer objeto em python, seu identificado único.

Se você olhar o id de a[0] e b[2] vai ver que eles são o mesmo id por ambos se tratarem do objeto 1 da classe int.

Se você olhar o id de a e b vai ver que são diferentes.

Se você der um a.append(b) o que ele vai fazer é isso: [1,2,3,b]

Mas como b são referencias de objetos o que você vai ver é [1,2,3,[3,2,1]]

Se você mudar qualquer coisa na lista b vai perceber que também muda na lista a, mas só na parte onde está o b.

Tuplas, dicionarios e sets são diferentes e se comportam de forma diferente de lista, afinal são de outra classe.

Deu para entender?

 

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!