ノード一覧に戻る

リスト絞り込み

list_filter

predicate が true になった要素だけを残します

確認済み
解説あり

入力ポート

名前説明
リスト
list
List<Any>
必須
絞り込む元のリストです
X
x
Number
必要なら使える数値変数 x です
Y
y
Number
必要なら使える数値変数 y です
Z
z
Number
必要なら使える数値変数 z です
W
w
Number
必要なら使える数値変数 w です
Vec
vec
Vec2
必要なら使える Vec2 変数です
フラグ
flag
Bool
必要なら使える Bool 変数です

出力ポート

名前説明
リスト
list
List<Any>
条件を満たした要素だけを残したリストです
要素数
count
Int
残った要素数です

パラメータ

名前既定値範囲説明・選択肢
要素の型
item_type
Enum
Any

入力リスト要素の期待型です

  • 数値(汎用)Number
    Float と Int の両方を扱える数値リストです
  • 小数Float
    小数値のリストです
  • 整数Int
    整数値のリストです
  • ON/OFFBool
    ON/OFF のリストです
  • Color
    色のリストです
  • 文字Text
    文字のリストです
  • 画像Image
    画像のリストです
  • パスPath
    パスのリストです
  • ピクセル線PixelLine
    ピクセル線のリストです
  • Vec2Vec2
    2D ベクトルのリストです
  • Vec3Vec3
    3D ベクトルのリストです
  • OKLCH補正OklchAdjust
    OKLCH基準の明るさ・鮮やかさ・色相・透明度の補正セットのリストです
  • パレットPalette
    パレットのリストです
  • リストList
    リストのリストを作ります
  • マップMap
    マップのリストです
  • 文字レイアウトTextLayout
    文字レイアウトのリストです
  • ピクセルパッチPixelPatch
    ピクセルパッチのリストです
  • 記録レイヤーRecordedLayer
    記録レイヤーのリストです
  • アニメーションクリップAnimationClip
    アニメーションクリップのリストです
  • AsepriteファイルAsepriteFile
    Aseprite document のリストです
  • ルールグリッドRuleGridSpec
    RuleGridSpec のリストです
  • ルールタイルセットRuleTileSet
    RuleTileSet のリストです
  • ルールタイル素材RuleTileAsset
    RuleTileAsset のリストです
  • ルールセットRuleSet
    RuleSet のリストです
  • ルールキャンバスRuleCanvas
    RuleCanvas のリストです
  • 解決済みルール配置RuleResolved
    RuleResolved のリストです
  • ルールタイルアトラスRuleTileAtlas
    RuleTileAtlas のリストです
  • 9スライスNineSlice
    9スライスUI素材のリストです
  • 2D FX 状態FxState2D
    FxState2D のリストです
  • スプライトシートSpriteSheet
    スプライトシートのリストです
  • バリアントスナップショットVariantSnapshot
    variant snapshot のリストです
  • バリアントレシピVariantRecipe
    variant recipe のリストです
  • バリアントレコードVariantRecord
    variant record のリストです
  • IsoItemIsoItem
    IsoItem のリストです
  • IsoSceneIsoScene
    IsoScene のリストです
  • IsoWorldIsoWorld
    IsoWorld のリストです
  • タイル素材TileAsset
    タイル素材のリストです(tile_palette_create の入力などに使います)
  • タイルパレットTilePalette
    タイルパレットのリストです
  • タイルマップTileCanvas
    タイルマップのリストです
  • 解決済みタイル配置TileResolved
    解決済みタイル配置のリストです
  • Any(上級者向け)Any
    上級者向けです。どの型でも混ぜられますが、取り出した値の型が下流ノードの期待と合わないと実行時エラーになります。
条件式
predicate
Text
true

この式が true になった要素だけを残します。既定の true はすべての要素型で有効です。 要素由来の名前は型別です: Number/Float/Int/Bool は item、Color は item_r/g/b/a、Vec2 は item と item_x/y、Vec3 は item_x/y/z。その他の構造化型には要素由来の名前がありません。 Map は有効な非予約キーを直接、すべての有効キーを item_<キー名> で参照できます。予約キー item, index, count, x, y, z, w, vec, vx, vy, flag, time, frame, total_frames より標準変数が優先されます。 入力ピンがつながっている時は Inspector の既定値より優先されます。 記述例: - item >= 0.75 - item_r > 0.5 - index % 2 == 0 - value < 0.5 && item_index == 0

X
x
Float
0-10000–10000 / step 0.01

入力ピンが未接続の時に使う x の値です

Y
y
Float
0-10000–10000 / step 0.01

入力ピンが未接続の時に使う y の値です

Z
z
Float
0-10000–10000 / step 0.01

入力ピンが未接続の時に使う z の値です

W
w
Float
0-10000–10000 / step 0.01

入力ピンが未接続の時に使う w の値です

Vec X
vec_x
Float
0-10000–10000 / step 0.01

vec 入力ピンが未接続の時に使う X 成分です

Vec Y
vec_y
Float
0-10000–10000 / step 0.01

vec 入力ピンが未接続の時に使う Y 成分です

フラグ
flag
Bool
false

flag 入力ピンが未接続の時に使う真偽値です

概要

条件式でリストから要素を選別するノードです。item >= 0.75 のような式が true になった要素だけが残ります。候補の間引き・しきい値による選別・ 「偶数番目だけ」のような規則的な抽出に使います。

使い方のポイント

  • list_map(変換)との対: map は「全要素を加工」、filter は「要素を選別」。 両方使うなら filter → map の順が無駄がない
  • しきい値を x 入力ピンで外部化すると「スライダーで候補の絞り込み具合を 調整する」対話的な使い方ができる
  • 件数が変わることに注意: 後段が固定件数を期待する構成 (list_unpack 等)とつなぐ時は count 出力で確認する

関連ノード

  • list_map — 選別ではなく変換
  • list_slice — 条件ではなく位置による切り出し
  • expression_bool — 同じ式エンジンの単値Bool版
  • variant_range / cartesian_product — 絞り込む候補の生成元

まず大事なこと

  • predicate は、各要素ごとに1回ずつ評価されます
  • 既定式 true は要素の型に関係なく有効で、初期状態ではすべての要素を残します
  • 結果が true なら残り、false なら捨てられます
  • つまり list = [0.25, 0.75, 1.25]predicate = item >= 0.75 なら、
    • 0.25 >= 0.75false なので捨てる
    • 0.75 >= 0.75true なので残す
    • 1.25 >= 0.75true なので残す という動きになります

要素の型ごとに使える名前

要素そのものから作られる名前は型によって異なります。item がどの型でも使える わけではありません。

要素の型 要素から使える名前
Number / Float / Int / Bool item
Color item_r, item_g, item_b, item_a
Vec2 item(Vec2), item_x, item_y
Vec3 item_x, item_y, item_z
Map 下記のキー名
上記以外の構造化型 要素から作る式変数はありません

Any では、実際の各要素が数値・Color・Vec2・Vec3・Map なら、その実体に対応する 名前が評価時に使えます。次の共通名は要素の型に関係なく使えます。

名前 意味
index 何番目の要素か。0始まりです index % 2 == 0
count 全体の要素数です index / max(count - 1, 1)
x, y, z, w 補助入力ピン、または Inspector で与える数値です item >= x
vec, vx, vy 補助 Vec2 入力、または Inspector の vec_x, vec_y です length(vec) > 1
flag 補助 Bool 入力、または Inspector の既定値です flag && index > 0
time, frame, total_frames 評価時の時刻情報です frame % 2 == 0

Map 要素の時

要素が Map の時、有効な識別子(value, a, _seed など)になっている非予約キーは そのキー名を条件式へ直接書けます。さらに、有効なすべてのキーは item_ を付けた 名前でも参照できます。

たとえば要素がこうなら:

{ "index": 0, "value": 0.25 }

条件式の中でそのままこう書けます。

value < 0.5
item_index == 0

index は常に「リスト内の現在位置」です。Map 内の index キーを読む時は item_index を使います。予約名 item, index, count, x, y, z, w, vec, vx, vy, flag, time, frame, total_frames は標準変数が優先され、同名の Map 値は item_<キー名> で参照します。先頭が英字か _、残りが英数字か _ で構成された 有効な識別子ではないキーは、式変数として公開されません。

よくある入力ごとの読み方:

入力元 要素の形 条件式で使える名前
普通の数値リスト 0.25, 0.75, 1.25 item, index, count
ListEnumerate { "index": 0, "item": 10 } 現在位置は index、Map 値は item_index, item_item
ListZip { "index": 0, "a": 1, "b": 10 } a, b、Map の index は item_index
CartesianProduct 複数キーの Map 非予約キーを直接、または有効な各キーを item_<キー名> で参照

よく使う条件式

  • item >= 0.75
    • しきい値以上だけ残します
  • index % 2 == 0
    • 偶数番目だけ残します
  • item >= x
    • 外から与えたしきい値より大きい要素だけ残します
  • value < 0.5 && item_index == 0
    • Map の複数条件で絞ります
  • a * 10 == b
    • ListZip の2本の関係で絞ります

具体例

例1: 0.75 以上だけ残す

入力:

[0.25, 0.75, 1.25]

設定:

  • item_type = Float
  • predicate = item >= 0.75

出力:

list = [0.75, 1.25]
count = 2

例2: ListZip の結果から一部だけ残す

入力:

[
  { "index": 0, "a": 1, "b": 10 },
  { "index": 1, "a": 2, "b": 20 }
]

設定:

  • item_type = Map
  • predicate = a * 10 == b

出力:

list = [
  { "index": 0, "a": 1, "b": 10 },
  { "index": 1, "a": 2, "b": 20 }
]
count = 2

例3: 偶数番目だけ残す

入力:

[10, 20, 30, 40, 50]

設定:

  • item_type = Number
  • predicate = index % 2 == 0

出力:

list = [10, 30, 50]
count = 3

例4: 変数や補助入力をしきい値として使う

入力:

[0.25, 0.75, 1.25]

設定:

  • item_type = Float
  • predicate = item >= x
  • x = 0.75

出力:

list = [0.75, 1.25]
count = 2

x は Inspector で直接入れてもよいですし、Variable Refx 入力ピンへつないでも使えます。

どういう時に使うか

  • 量産候補から条件に合うものだけ残したい時
  • BatchRender に送る前に候補数を絞りたい時

注意

  • v1 は constrained expression ベースです
  • 任意 subgraph を predicate として回す用途ではありません
  • Map の予約名は標準変数が優先されます。同名の Map 値は item_<キー名> で参照します
ノード一覧に戻る
リスト絞り込み — PixPipeline ノード解説