Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

212
Visualizações
¿Qué sucede en la memoria al descomprimir una colección?

Decir

 list1=[4,8,12] a,b,c=list1

la salida es a=4,b=8,c=12 .

mi confusión

El instructor nos dijo que no es como si a se asignara a 4 , b a 8 y c a 12 . No entendí claramente lo que dijo (aunque lo escuché repetidamente varias veces). Estaba diciendo algo como que el objeto se crea para 4 y a se asigna a 4 . Pero, ¿cuál es la diferencia entre esto y lo que he presentado a continuación en la figura?

diagrama escrito a mano

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Lo que es engañoso de su imagen es que implica que a , b y c hacen referencia a segmentos de list1 . Sin embargo, si cambia list1 , encontrará que a , b y c no se ven afectados por ese cambio.

Una mejor manera de dibujar la imagen podría ser mostrar 4, 8 y 12 separados de list1 :

 list1-->[ ][ ][ ] | | | VVV 4 8 12 ^ ^ ^ | | | abc

Todas las variables son independientes entre sí, aunque algunas de ellas (por ejemplo list1[0] y a ) actualmente apuntan a los mismos valores.

Para decirlo de otra manera: decir a = list1[0] es decir "evaluar list1[0] y asignar a para hacer referencia a ese valor en este momento ", que no es lo mismo que decir "hacer que a sea un alias para list1[0] ".

over 4 years ago · Santiago Trujillo Relatório

0

Prueba esto:

 # define the list list1=[4,8,12] # reserve 3 memory spaces and unpack the values from list into them # those memory spaces will contain one integer each one of the size of # sys.getsizeof(int()) == 28 bytes (Python 3) # a,b and c are actually pointers to those memory spaces a,b,c=list1 print(a,b,c) # change the first value of the list list1[0] = 56 print(list1) # now check that indeed "a" is not the same pointer than "list1[0]" print(a)

Pero

Debes tener cuidado con este tipo de asignaciones con listas, prueba también esto:

 list2 = list1 print(list1, list2) # then change any of them list1 [0] = -1 # check that "list2" is pointing to the same memory address than "list1" print(list1, list2)
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda