Estructura de datos en python

Iniciado por Kase_New_Python, 26 Marzo 2014, 20:19 PM

0 Miembros y 2 Visitantes están viendo este tema.

Kase_New_Python

 :-[ 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 (python) [Seleccionar]
struct Persona{
 char nombre[50];
 int edad;
}


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 (python) [Seleccionar]
datos=[]
Informacion = []
x = int(input("Cuantos datos desea introducir\n"))
for i in range(x):
   nombre = input("Nombre\n")
   edad = input("Edad\n")
   datos.append(nombre)
   datos.append(edad)
   Informacion.append(datos)
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.

-Myx-

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.

Eleкtro

Cita de: -Myx- en 27 Marzo 2014, 15:53 PMMOD: 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








Once

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 (python) [Seleccionar]

Informacion = []
x = int(input("Cuantos datos desea introducir: "))

for i in range(x):
    nombre = raw_input("Nombre: ")
    edad = raw_input("Edad: ")
    Informacion.append([nombre, edad])

print("los datos son",Informacion)


Para recorrer la lista, puedes usar un for:

Código (python) [Seleccionar]
for datos in Informacion:
    print "Nombre:", datos[0]
    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!

Kase_New_Python

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.