¿Qué es una lista en C y cómo se diferencia de un array?
En programación, las listas son estructuras más dinámicas y flexibles que los arrays. Mientras que un array tiene una longitud fija, las listas permiten añadir, quitar y modificar elementos de forma sencilla. Considera una lista de pedidos en un restaurante como ejemplo: si un miembro de la familia cambia de opinión, puedes quitar o agregar elementos sin problemas. Además, las listas te permiten buscar elementos por índice o por su valor directamente, algo que no es posible con los arrays. A continuación, vamos a detallar cómo trabajar con listas en C.
¿Cómo se declara una lista en C?
Para definir una lista en C, utilizamos la palabra clave List, especificando el tipo de datos que almacenará. Observemos el siguiente código:
List<string> tacoShoppingList =newList<string>();
Aquí estamos declarando una lista llamada tacoShoppingList que almacenará cadenas de caracteres. El uso de <string> indica que nuestros elementos serán de tipo string.
¿Cómo se agregan elementos a una lista?
Utilizar el método .Add es la manera más sencilla de agregar elementos:
tacoShoppingList.Add("Cinco tacos de suadero");tacoShoppingList.Add("Cuatro tacos de tripa");tacoShoppingList.Add("Cinco tacos de pastor");tacoShoppingList.Add("Cuatro Coca-Colas");
Este método permite incluir cualquier cadena deseada, ya sea "tacos" u otras bebidas.
¿Cómo se imprimen los elementos de una lista?
Para imprimir tus listas, utiliza un bucle for y el método Console.WriteLine. Esto te permitirá acceder y mostrar cada elemento por índice:
for(int i =0; i < tacoShoppingList.Count; i++){ Console.WriteLine(tacoShoppingList[i]);}
El uso de tacoShoppingList.Count permite iterar a través de todos los elementos de la lista, garantizando que se impriman en el orden correcto.
¿Cómo se manipulan los elementos de una lista?
Las listas en C ofrecen varios métodos para modificar su contenido:
¿Cómo se eliminan elementos de una lista?
Para remover un elemento específico, utiliza el método .Remove:
tacoShoppingList.Remove("Cinco tacos de suadero");
Recuerda que la comparación de cadenas es sensible a mayúsculas, así que asegúrate de que el texto coincida exactamente.
Métodos adicionales
C además ofrece otros métodos útiles para trabajar con listas:
RemoveRange: Permite eliminar un rango específico de elementos.
Clear: Elimina todos los elementos de la lista.
Foreach: Ejecuta una acción específica por cada elemento en la lista.
FirstOrDefault: Retorna el primer elemento o un valor predeterminado si no hay ninguno.
Estos métodos son esenciales para gestionar listas de forma eficiente y dinámica.
Al entender cómo funcionan las listas y sus ventajas sobre los arrays, estarás mejor preparado para solucionar problemas de almacenamiento y manipulación de datos en tus proyectos de programación en C. ¡Continúa explorando y experimentando con listas para mejorar tus habilidades!
Para el que no le funciono la clase List<>, es porque falta una referencia al principio del archivo
using System.Collections.Generic;
Gracias, me sirvió!
Muchas Gracias !
Esta clase solo me dió hambre :c
x2
Menos mal soy hijo unico con un hermano tan indeciso haria que el mismo se gaste su comida XD
Las listas cumplen la misma funcionalidad que un array almacenar información. Los array lo utilizaremos para almacenar información que no cambiará o será en casos particulares. En cambio una Lista se utilizará para la información que se vaya modificando constantemente (por eso utilizaremos los métodos provenientes de la clase list).
O sea que los arrays son como las tuplas de Python?
Otra forma de recorrer las listas sería utilizando el ,metodo ForEach de las listas y las expresiones lambda o funciones anonímas, siguiendo los ejemplos (soy de Venezuela y me encantan las arepas):
List<string> tacoShoppingList = new List<string>();
tacoShoppingList.Add("4 arepas de reina pepiada");
tacoShoppingList.Add("5 arepas peludas");
tacoShoppingList.Add("4 arepas sifrinas");
tacoShoppingList.Add("2 arepas viudas");
for (int i = 0; i < tacoShoppingList.Count; i++)
{
Console.WriteLine(tacoShoppingList[i]);
}
Console.WriteLine("---------------------");
tacoShoppingList.RemoveAt(3); //Sin relleno no gusta
tacoShoppingList.ForEach((x) => Console.WriteLine(x));
Console.WriteLine("---------------------");
Me gusta mucho ese metodo me recuerda a la programacion de JavaScript <3
staticvoidMain(string[] args){List<string> tacoShoppingList =newList<string>(); tacoShoppingList.Add("1 Taco de suadero"); tacoShoppingList.Add("2 Tacos de Pastror"); tacoShoppingList.Add("3 Tacos de campechano"); tacoShoppingList.Add("4 Coca Colas");for(int i=0; i< tacoShoppingList.Count; i++){Console.WriteLine(tacoShoppingList[i]);}Console.WriteLine(" "); tacoShoppingList.RemoveAt(0);for(int i =0; i < tacoShoppingList.Count; i++){Console.WriteLine(tacoShoppingList[i]);}Console.ReadLine();}
Si pican ctrl + D se duplica la línea en la que están
Buenas Profe, si tenemos 10 valores:
Que es lo mas recomendable utilizar? una lista o un arreglo.
Y porque?
SALUDOS
Yo puedo responder eso. lo más recomendable es un arreglo de 10 valores. Los arreglos lo utilizamos cuando sabemos cuantos valores necesitamos, en cambio las listas es mejor utilizarlas cuando no sabemos cuantos valores habrá ya que esta puede crecer dinámicamente no como el arreglo que es estático.
siguiendo tu pregunta el arreglo siempre tendrá 10 valores en cambio una lista podrá crecer si necesita más de 10.
Gracias por el comentario Andoni te lo agradezco. saludos
para no escribir tanto use CTRL + D en cada .Add para copiar toda la linea.
Gracias, no lo conocía.
Que triste no ver uno de birria :(
Una manera de ahorrar tiempo a la hora de mostrar la lista es creando un método.
staticvoidMain(string[]Args){ list<string> tacosShoppingList =newList<string>(); tacosShoppingList.Add("Tacos de suadero");MostrarElementos(tacosShoppingList);}publicstaticvoidMostrarElementos(List<string> lista1){for(int i =0; i < lista1.Count; i++){Console.WriteLine("{0}", lista1.[i]);}}
Aquí hice el ejercicio un poco más interactivo, pues dejé que el usuario pueda llenar la lista y se imprima en limpio. Aún me falta trasladarlos a diferentes casos, en donde el usuario quiera seguir llenando la lista o quiera parar con el llenado.
Me recordó a esa escena haha
¿Que hace ese signo de "?"
Aqui les dejo un link donde podran ver las diferentes funciones que ofrece la clase List<>
Al buscar el error, se me hizo mucho más sencillo hacer referencia al elemento que quería remover:
tacoShoppingList.Remove(tacoShoppingList[0]);
Y funcionó perfectamente.
Si vas a usar un índice, la forma correcta es:
tacoShoppingList.RemoveAt(0);
Como lo menciona un compañero ya en aportes, si te genera error la clase List<> es porque tu VS no te agrega automaticamente las referencias, pero puedes añadirla manualmente al inicio de tu código:
using System.Collections.Generic;
Y listo! con eso debería funcionar.
para poder usar el list debo importar alguna libreria
En C# v10 (VS2022) no es necesario, en versiones anteriores debes escribir al principio del archivo:
using System.Collections.Generic;
Listas
Las listas en C# son una colección dinámica de elementos, similares a los arreglos, pero con algunas características adicionales. Se pueden utilizar para almacenar cualquier tipo de datos, y su tamaño puede cambiar dinámicamente en tiempo de ejecución.
Para usar una lista, se debe importar el espacio de nombre System.Collections.Generic
y se declara con la siguiente sintaxis:
se pueden agregar elementos a la lista con el metodo Add()
myList.Add(1);myList.Add(2);myList.Add(3);
También se pueden inicializar con valores al momento de declarar
List<int> myList =newList<int>(){1,2,3,4,5};
Para acceder a un elemento específico de la lista se utiliza el índice, que comienza en 0, igual que en los arreglos. Por ejemplo:
List<int> myList =newList<int>(){1,2,3,4,5};int thirdElement = myList[2];// thirdElement es igual a 3
Las listas tienen muchos métodos y propiedades útiles, como Count, que devuelve la cantidad de elementos en la lista, o Sort() que ordena los elementos de la lista.
List<int> myList =newList<int>(){5,3,8,1,4};int listCount = myList.Count;// listCount es igual a 5myList.Sort();//myList es ahora {1,3,4,5,8}
Además, las listas proporcionan una interfaz similar a los arreglos, lo que facilita su uso en muchas situaciones.
🎉✨"The best and funniest contribution of the day is: Chunchullo.🤣🤣
En Colombia a esa tripa le llamamos Chunchurria o Chinchulín :)