Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Kase_New_Python en 26 Marzo 2014, 20:19 pm



Título: Estructura de datos en python
Publicado por: Kase_New_Python en 26 Marzo 2014, 20:19 pm
 :-[ Hola amigos del foro,  acabo de emigrar de c a python este es un lenguaje impresionante, hace unos dias estaba pensando en como aplicar las estructuras en c en python  por ejemplo
Código
  1. struct Persona{
  2.  char nombre[50];
  3.  int edad;
  4. }

Entonces empecé a utilizar listas, he checacos los metodos append, extend, insert, remove, pop, index, count, sort y reverse:
Lo que hice fue lo siguiente:
Código
  1. datos=[]
  2. Informacion = []
  3. x = int(input("Cuantos datos desea introducir\n"))
  4. for i in range(x):
  5.    nombre = input("Nombre\n")
  6.    edad = input("Edad\n")
  7.    datos.append(nombre)
  8.    datos.append(edad)
  9.    Informacion.append(datos)
  10. print("los datos son",Informacion)

 :silbar: Pero en este punto me arroja lo siguiente si le pongo que quiero introducir 2 personas
los datos son [['Kase', '18', 'Danna', '16'], ['Kase', '18', 'Danna', '16']]

1.- En primera me repite la informacion de datos
2.- Cuando borro mi lista de datos  "del datos" o datos.clear  mi lista Informacion sale vacia..

mi pregunta es como le hago para que no me repita la informacion y la segunda es como recorro cada uno de mis elementos de mi lista de listas Informacion es decir como optengo el nombre y luego edad..
Tambien si existe otra forma mas facil de implementar las estructuras de C en python..
Muchas gracias de ante mano: Saludos


[MOD]: Bienvenido al foro, pero lee las normas del post con chincheta, para saber como insertar un código.


Título: Re: Estructura de datos en python
Publicado por: -Myx- en 27 Marzo 2014, 15:53 pm
te das cuenta que "datos" sigue creciendo y creciendo y en cada loop lo agregas a Informacion?

MOD: usar CODE esta bien, no tengo nada en contra de eso, pero quizas podriamos usar CODE sin un formato de codigo. Asi seria mas facil copiar y pegar en el caso de que haga falta.


Título: Re: Estructura de datos en python
Publicado por: Eleкtro en 27 Marzo 2014, 16:44 pm
MOD: usar CODE esta bien, no tengo nada en contra de eso, pero quizas podriamos usar CODE sin un formato de codigo. Asi seria mas facil copiar y pegar en el caso de que haga falta.

No se muy bien a que te refieres, pero está permitido usar la etiqueta 'CODE' sin determinar el formato adecuado a la sintaxis del lenguaje específico (Ej: CODE=python), el problema es que el usuario no utilizó ninguna etiqueta (no insertó la etiqueta 'CODE'), si ahora el código está con formato es porque obviamente le edité el post.

Saludos


Título: Re: Estructura de datos en python
Publicado por: Once en 28 Marzo 2014, 18:03 pm
Eso sucede porque cuando haces un append(datos), en lugar de agregar los elementos de datos, guardas una referencia al objeto datos. Por eso cuando modificas o eliminas datos, tambien cambia el contenido de Informacion.

Una forma de hacer lo que quieres sin modificar mucho el código sería:

Código
  1. Informacion = []
  2. x = int(input("Cuantos datos desea introducir: "))
  3.  
  4. for i in range(x):
  5.    nombre = raw_input("Nombre: ")
  6.    edad = raw_input("Edad: ")
  7.    Informacion.append([nombre, edad])
  8.  
  9. print("los datos son",Informacion)

Para recorrer la lista, puedes usar un for:

Código
  1. for datos in Informacion:
  2.    print "Nombre:", datos[0]
  3.    print "Edad:", datos[1]

Recuerda que estás recorriendo una lista cuyo cada elemento es una lista nueva de dos elementos.

Otra forma de hacer lo mismo sería con diccionarios. Echales un vistazo.

Saludos!


Título: Re: Estructura de datos en python
Publicado por: Kase_New_Python en 2 Abril 2014, 20:06 pm
Muchas gracias a todos, ya heche andar esto y de nuevo gracias tambien a la comunidad.
Ahora ando checando lo del diccionario. gracias por la ayuda.