A list is an ordered collection of values. In System Modeler, lists are values like any other: they travel along wires, flow from node to node, and obey the same type rules as any other data. A wire that carries a list connects to any input port that accepts that list type. In other programming languages, the same concept is often called an array.
Lists are zero-indexed. The first item is at index 0, the second at index 1, and so on.
A list can hold any type of value: numbers, strings, booleans, geometry objects, or other lists.
The most direct way to create a list from individual values is the Merge Lists In Order node. Connect individual values or existing lists to its inputs and it assembles them into a single ordered list.
Lists also arise naturally from other operations:
The List category in the Base package provides nodes for the most common list operations.

Base - List Operations
The example shows several of these nodes working together on the same list. One list output connects to five downstream nodes simultaneously. Each receives the same list and processes it independently. This illustrates a key property of lists: sharing a list between nodes doesn't consume it. Every connected node gets its own read of the same data.
When you need to apply an operation to every item in a list individually, use a For-Each loop. The loop takes a list on its Items input, runs its inner graph once for each item, and collects the results into a Loop Results list.
The FOR-EACH and Subgraphs sample graph in the Base package shows this pattern in full: a list of numbers feeds into a FOR-EACH loop, the inner graph filters negatives using conditional logic, and Remove Nulls cleans up the output list before further processing.
See For-Each and While loops for how to build a For-Each loop.
When a For-Each loop uses conditional logic to keep or discard items, discarded items often produce null instead of a value. The resulting Loop Results list contains a mix of values and nulls. Use Remove Nulls after the loop to produce a clean list of only the items that passed the condition.
Use Is List Empty to guard against an empty list reaching a node that requires at least one item. Pair it with a conditional or an error node to handle the empty case explicitly rather than letting a downstream node fail.