List Extend Ovum
List Extend Ovum — merge two lists without mutating either
- list_a
- list_b
- list
Take two lists, append the elements of the second onto the end of the first, and hand back a brand-new list - leaving both originals untouched. That's ListExtendOvum, the maintained Python-list flavor of the pack's "extend" utility and the version you should be using instead of the deprecated ListExtend.
It's a boring node on purpose. The whole point is that it does one thing predictably: list_a + list_b as a fresh list, no side effects. Which is exactly why it's useful - in ComfyUI, where nodes share data by reference, a non-mutating merge lets you combine lists while keeping the originals available to other branches of the graph.
Inputs and output
list_a- the first list, its elements end up first in the result.list_b- the second list, appended afterlist_a's elements.
Both are * (any) inputs, so lists of strings, ints, filenames, or objects all work. Output is a single list. That's the entire surface area - there's nothing to misconfigure, which is the appeal of these utility nodes after a long day of fighting samplers.
How it differs from the alternatives
- vs
ListExtend(no suffix): that one's deprecated. This is the current node. - vs
ListSplice: splice mutates the input list in place and can delete elements; extend only appends and never mutates. Use extend when you want pure concatenation. - vs
ConcatLists: functionally the same idea from a slightly different family in this pack. If you've got one of each in a downloaded workflow, they're interchangeable in practice.
Like all the pack's NewPointer list nodes, it forces IS_CHANGED to NaN - never cached, always re-runs. Good for loops where you need the merged list fresh every iteration.
Where you'll use it
- Merging prompt parts: combine a fixed style list with a variable tag list, then join the result into a prompt string with
JoinListOvum. - Combining two loader outputs: merge a list of base filenames with a list of variants before a fan-out, keeping both source lists for other branches.
- Building an accumulating list in a loop: because it's non-mutating, you can thread the output back into
list_awithout worrying about the previous iteration's list being clobbered.
Install
Ships in comfy-ovum:
cd ComfyUI/custom_nodes
git clone https://github.com/sfinktah/comfy-ovum
or ComfyUI Manager → comfy-ovum, then restart. No models, no keys - pure utility.
Gotchas
- Feeding a non-list raises
ValueError: Input must be a Python list. Convert upstream. - It concatenates but doesn't deduplicate or sort - if you need either, chain a
UniqueListor a sort node after it.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| list_a | * | — | |
| list_b | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| list | * | — |