Nodes/comfy-ovum/List Extend Ovum
ComfyUI Node

List Extend Ovum

List Extend Ovum — merge two lists without mutating either

By sfinktah·Created about a year ago·Updated 10 months ago· 7
List Extend Ovum
  • 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 after list_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_a without 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 UniqueList or a sort node after it.
Categoryovum/lists/python

Inputs (2)

NameTypeDefaultDescription
list_a*
list_b*

Outputs (1)

NameTypeDescription
list*