create Data List from FLOATs
Build a FLOAT list from plain numbers — decimal values, batch-ready
- list
CFG scales, denoise strengths, upscale factors - the decimal dials of a workflow. When you want to test a spread of them ("CFG 3.5, 4.5, 5.5…") the old way is duplicate samplers. The better way is a FLOAT list: one collection of values that fans out across your graph. create Data List from FLOATs is the node that builds it.
It's part of Basic data handling, StableLlama's zero-dependency utility pack, and it's the float-flavored version of the pack's list builders (INT, BOOLEAN, and STRING siblings exist too).
How it works
Same dynamic-input pattern as its siblings: start with item_0 (a FLOAT), right-click to add item_1, item_2, and so on. Each added widget becomes one element of the output. Values are coerced through float(), so 3 typed as an int still lands as 3.0.
Output list is a FLOAT data list. The distinction matters here: it's a batch. Wire it into a sampler's CFG input and ComfyUI runs the sampler once per value - a whole CFG sweep from a single node. That's the entire point of the Data List family.
What you set
item_0(FLOAT, optional) - the first value; add more as needed.
One output: list, the assembled FLOAT data list.
A realistic use
Parameter sweeps are the classic case. Build a list of denoise values (0.3, 0.5, 0.7), feed it into a img2img sampler's denoise input, and you get three outputs at three denoise strengths in one run - then pick the winner. Same trick works for CFG, upscale factors, or any FLOAT a node accepts.
Installing it
ComfyUI Manager → search "Basic data handling", or:
cd ComfyUI/custom_nodes
git clone https://github.com/StableLlama/ComfyUI-basic_data_handling
Restart. No dependencies, no models.
Common issues
- "My integer got a .0 and I didn't ask for it." That's the coercion doing its job -
float()always produces a decimal. If you want whole numbers, use the INT list builder instead. - "The list has a trailing entry." The dynamic container reserves a slot; a blank widget coerces to
0.0and pollutes your sweep. Fill or disconnect every input you're not using. - "One bad value threw the whole run." A widget holding text where a number belongs fails at
float(). Keep the inputs numeric and the sweep runs clean.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| item_0opt | FLOAT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| list | FLOAT | — |