A list (aka collection or container) is a logical grouping of data items into a single unit. Lists enable operations such as inserting new items, searching through existing items, deleting items, and enumerating existing items. There are several common list data structures and different structures have different capabilities/performance characteristics.
In the author’s humble opinion, comprehension of list data structures is the
first concept that an aspiring programmer should master because list
manipulation is the single most common programming task. So common in fact that
all mainstream languages have builtin list abstractions. For instance, LISP,
which stands for LISt Processor, is designed entirely around the concept. C#
IEnumerable interface, Java has the
Iterable interface, Python has
list. There are many more examples but there is no need to belabor the point.
List data structures have differing strengths, weaknesses, and capabilities. Therefore, it’s important to fully understand list abstractions in order to choose the correct one. Sometimes choosing the right one is easy because a particular utility is required. Contrarily, it’s possible to choose one that will meet the software requirements but have a prodigious negative impact on performance.