Python - Asignacion de valores multiples

 
Vista:
sin imagen de perfil

Asignacion de valores multiples

Publicado por Harles (2 intervenciones) el 19/05/2022 05:32:53
En que consiste la asignacion de valores multiples, ya que tengo uno ejemplo sencillo de codigo, que no coincide con mi logica. por ejemplo
en este ejercicio

x, y, z = 5, 10, 8
x, y, z = z, y, x

print(x > z)
print((y - 5) == x) al ejecutar este codigo x seria igual a 8, y z seria igual a 5.

no entiendo el porque ya que anteriormente x seria igual a 8, ya que z=8, y z seria igual a x, teniendo el valor de 8 asignado. ose quedaria x=8 y z=5

pero resulta y pasa que si el ejercicio se hiciera de esta otra manera que parece igual, pero no lo es.

x, y, z = 5, 10, 8
x = z
y = y
z = x
print(x > z)
print((y - 5) == x) En este ejercicio al ejecutar el codigo x=8 y z=8, las dos variables si tendrian el mismo valor.

Me gustaria saber entonces cual es la diferencia cuando se asignan valores multiples y cuando no se usan valores multiples. ? por favor
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco Javier
Val: 249
Ha aumentado su posición en 29 puestos en Python (en relación al último mes)
Gráfica de Python

Asignacion de valores multiples

Publicado por Francisco Javier (313 intervenciones) el 19/05/2022 20:07:54
buenas al asignarle valores multiple por segunda vez coge el valor de la primera x de la primera asignación, si en la segunda asignacion la z la hace por separado coge el valor nuevo de x, por ejemplo si lo haces así la segunda asignacion
1
2
x, y= z, y
z=x
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de 7aamin
Val: 11
Ha disminuido su posición en 6 puestos en Python (en relación al último mes)
Gráfica de Python

Asignacion de valores multiples

Publicado por 7aamin (117 intervenciones) el 19/05/2022 20:45:21
La respuesta es simplemente porque asi es el interprete de python..! Cpython traduce linea por linea, por eso cuando haces el reemplazo de variables en cada linea, el valor de "z" si cambia, algo que no sucede cuando haces el reemplazo con asignacion multiple.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Asignacion de valores multiples

Publicado por Harles (2 intervenciones) el 26/05/2022 20:06:39
Es un procedimiento nada confiable, la verdad no lo veo ninguna logica, pero bueno python lo quiso asi.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de 7aamin
Val: 11
Ha disminuido su posición en 6 puestos en Python (en relación al último mes)
Gráfica de Python

Asignacion de valores multiples

Publicado por 7aamin (117 intervenciones) el 26/05/2022 21:03:41
Realmente no es que sirva para algo referente a logica, pero si que sirve mucho para mantener un codigo mas ordenado, por ejemplo yo prefiero mil veces declarar variables asi:

1
var1, var2, var3 = "Hola", 2, True

en vez de:

1
2
3
var1 = "Hola"
var2 = 2
var3 = True

Yo no soy muy amante de las lineas con poca informacion, asi que trato siempre de completarlas con lo que mas pueda, por ejemplo tambien suelo usar el if, for o while en una sola linea cuando sea posible, o incluso usar comprehensions cuando quiero generar una lista o un diccionario en una sola linea:

1
2
3
4
5
6
7
8
def filterData(string:str) -> tuple:
    char, name, index = list(), "Carlos", list()
    for i,v in enumerate(name.upper()):
        char += [x for x in string.upper() if x == v]
        index += [i for b in string.upper() if b == v]
    return list(zip(char, index))
 
print(filterData('Mirna'))

Creo que es mas legible el codigo asi que escribir algo como:

1
2
3
4
5
6
7
8
9
10
11
def filterDatam(string:str) -> tuple:
    char = list()
    index = list()
    name = "Carlos"
    for i,v in enumerate(name.upper()):
        arr = list()
        brr = list()
        for x in string.upper():
            if x == v:
                arr.append(x)
....... Muchas lineas mas de codigo

Y tambien demuestra tu nivel... por lo general cuando recien aprendemos a programar, lo hacemos asi.. linea por linea.. yo solia hacerlo asi.. pero con la practica vas aprendiendo a mejorar tu codigo..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar