@victorhck@saci ei, tiene que ver con temas de eficiencia y etc. el tema es que las listas y los diccionarios se usan muchisimo, y en cosas grandes se nota la diferencia.
"The reverse() method modifies the sequence in place for economy of space when reversing a large sequence. To remind users that it operates by side effect, it does not return the reversed sequence."
@victorhck@saci Imagínate cada entrada de la lista como una hoja A4, y las tienes todas una al lado de la otra (la lista).
Si las tienes que ordenar: coges las hojas, las mueves, intercambias y etc, y ya lo tienes, sin usar hojas nuevas. Esto es a lo que se refieren con "in-place/in-situ", no usas memoria adicional.
@victorhck@saci Si lo que quieres es una copia nueva al reves, como alguien te mencionó, puedes usar: interm = list(reversed(c1))
El reversed genera un "iterator" que te va dando la lista de derecha a izquierda, es útil porque tampoco hace copia de las hojas A4, simplemente te las va pasando al revés.
Con "list", sí que decimos "oye, esto quiero guardarlo, copiamelo".
@victorhck@saci como generar cada vez una lista nueva sería costoso, y retornar la misma lista lleva a este tipo de incongruencias, el c1.reverse() mejor no retorna nada!
Cualquier función en Python sin un valor explícito retornado, realmente te está retornando None, de aquí que veas que interm tiene como valor None.
Aquí: c1 es reordenada, sin ir a buscar más hojas A4, esla misma lista.
Imaginemos que interm tiene como valor ["G", "R", "X"]. Qué tiene que significar esta línea?
interm[0] = "A"
Esperarías que sólo afecte a interm, pero como sólo hay una copia de tu lista, no es verdad, afecta también a c1. Es decir, c1 e interm son como flechitas apuntando a la misma lista, con las mismas hojas A4!
@victorhck@saci Ahora, imaginate que tienes que generar una copia ordenada: tienes que ir a buscar otras hojas A4, que tengas suficiente, tal vez hacer espacio en la mesa, ir copiando cada hoja original una a una y poniéndolas en su sitio las nuevas. Bastante más trabajoso.