Back to Node List

List Filter

list_filter

Keeps only list items whose predicate evaluates to true

Draft
Guide available
The node name and summary are available in English. Port, parameter, and article details are currently shown in Japanese.

Input Ports

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

Output Ports

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

Parameters

NameTypeDefaultRangeDescription / Options
要素の型
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 のリストです
  • Any(上級者向け)Any
    上級者向けです。どの型でも混ぜられますが、取り出した値の型が下流ノードの期待と合わないと実行時エラーになります。
条件式
predicate
Text
true

この式が true になった要素だけを残します。 使える名前: item, index, count, x, y, z, w, vec, vx, vy, flag, time, frame, total_frames。Map 要素なら各キー名もそのまま使えます。 記述例: - item >= 0.75 - item >= x - index % 2 == 0 - value < 0.5 && index == 0 入力ピンがつながっている時は、Inspector の既定値より入力ピンが優先されます。

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 入力ピンが未接続の時に使う真偽値です

まず大事なこと

  • predicate は、各要素ごとに1回ずつ評価されます
  • 結果が 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 今見ている要素そのもの item >= 0.75
index 何番目の要素か。0始まりです index % 2 == 0
count 全体の要素数です index < count - 1
x, y, z, w 補助入力ピン、または Inspector で与える数値です item >= x
vec, vx, vy 補助 Vec2 入力、または Inspector の vec_x, vec_y です length(vec) > item
flag 補助 Bool 入力、または Inspector の既定値です flag && item > 0
time, frame, total_frames 評価時の時刻情報です frame % 2 == 0

Map 要素の時

要素が Map の時は、そのキー名をそのまま条件式に書けます。

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

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

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

value < 0.5
index == 0

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

入力元 要素の形 条件式で使える名前
普通の数値リスト 0.25, 0.75, 1.25 item, index, count
ListEnumerate { "index": 0, "item": 10 } index, item
ListZip { "index": 0, "a": 1, "b": 10 } index, a, b
CartesianProduct 複数キーの Map 各キー名をそのまま使えます

よく使う条件式

  • item >= 0.75
    • しきい値以上だけ残します
  • index % 2 == 0
    • 偶数番目だけ残します
  • item >= x
    • 外から与えたしきい値より大きい要素だけ残します
  • value < 0.5 && 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 要素のキー名と x, y, z, w, vec, flag が同名の時は、補助入力側の名前が優先されます
Back to Node List
List Filter — PixPipeline Node Reference