ノード一覧に戻る

リスト列挙

list_enumerate

リストまたはパレットの各要素にインデックスを付けて列挙します

確認済み
解説あり

入力ポート

名前説明
リスト
list
Any
必須
列挙する元のリストまたはパレットです

出力ポート

名前説明
列挙結果
entries
List<Map>
{ index, item } のマップ一覧です
要素数
count
Int
列挙した要素数です

概要

リストの各要素に「何番目か」の番号を付けるノードです。後段の list_map / list_filter では、Map 内の元値を item_item、付与した番号を item_index として参照できます。

使い方のポイント

  • 実は list_map / list_filter は生リストのままでも index が使えるので、 多くの場合このノードは不要。番号付きの Map 構造そのものを下流に 残したい時(デバッグ表示・後で複数回使う)に挟む
  • 「偶数番目だけ」「先頭以外」のような index 条件は list_filter の式 (index % 2 == 0 等)で直接書ける

関連ノード

  • list_map / list_filter — 番号を使う先(式内 index でも可)
  • list_zip — 2本のリストを番号で対応付ける版
  • list_slice — 番号範囲での切り出し

まず大事なこと

  • このノードは、元の値に 「何番目か」 を付けるノードです
  • 後段の ListMapListFilterindex を使いたい時によく使います

まずはこの例

入力リストがこうだとします。

["red", "blue", "green"]

このとき entries はこうなります。

[
  { "index": 0, "item": "red" },
  { "index": 1, "item": "blue" },
  { "index": 2, "item": "green" }
]

count はこうです。

count = 3

後段からどう見えるか

ListMapListFilter にこの entries を入れると、各要素は Map なので

  • item_item: Map 内の元の値
  • item_index: Enumerate が Map 内へ保存した番号
  • index: ListMap / ListFilter が処理している外側リスト上の現在位置

として式で使えます。並べ替えていない直後は item_indexindex が同じ値でも、 意味は別です。

例:

item_item + item_index
index % 2 == 0

どういう時に使うか

  • 候補に番号を付けて debug したい時
  • index を使って条件分岐したい時
  • ListMap / ListFilter から、保存済み番号 item_index と外側位置 index を区別して読みたい時

注意

  • 各要素の型は保持されるので、item 側には元の値がそのまま入ります
  • Palette 入力は List<Color> として列挙します
ノード一覧に戻る
リスト列挙 — PixPipeline ノード解説