リストのブロック
「リスト」タブのブロックは次の通りです。
準備
これ以降の説明のために「リスト」という名前の新しい変数を作成します。
空のリストを作成する
用意した変数「リスト」に空のリストをセットするには、次のようにします。
空のリストに値をセットするには「指定位置に項目を設定する」を使います。
任意の項目を初期値としたリストを作成する
「以下を使ってリストを作成」ブロックを使うと、任意の項目を初期値として持つリストを作成することができます。
初期値として "リンゴ", "オレンジ", "バナナ" をもったリストを作成するには次のようにします。
デバッグ用ウィンドウには リンゴ,オレンジ,バナナ
と表示されます。
追加する項目を増減させる
ギアアイコンをクリックすると、追加する項目を増減させることができます。
左側(背景がグレー)の「項目」をマウスで選択し、ドラッグ&ドロップで右側の任意の位置に挿入すると、その部分に新しい項目をセットできるようになります。
指定位置の値を返す/削除する
リストの任意の位置を指定して、値を取り出すことができます。
位置は 1 から数えます。次の例は1番目の値をデバッグウィンドウに表示するものです。
デバッグ用ウィンドウには リンゴ
と表示されます。
取得, 取得して削除, 削除
このブロックは「取得」「取得して削除」「削除」を指定できます。
各操作を行った後、リストがどのように変化するかをデバッグウィンドウを使って確認してみます。
処理 |
処理による出力 |
処理後のリストの内容 |
取得 |
リンゴ |
リンゴ,オレンジ,バナナ |
取得して削除 |
リンゴ |
オレンジ,バナナ |
削除 |
- (デバッグブロックも使えない) |
オレンジ,バナナ |
位置の設定
このブロックは位置の設定方法も指定できます。「# (指定位置)」「位置:後ろから」「最初」「最後」「ランダム」を用意しています。
位置の指定 |
結果 |
# 1 |
リンゴ |
位置:後ろから 1 |
バナナ |
最初 |
リンゴ |
最後 |
バナナ |
ランダム |
(不定) |
リストの指定部分のコピーを作成する
リストの開始位置と終了位置を指定し、その範囲をコピーした新しいリストを作成することができます。
元のリストの2番目から3番目までをコピーし、新しいリストを作成する場合は次のようにします。
デバッグ用ウィンドウには元リストはリンゴ,オレンジ,バナナ,桃
と表示されます。新しく作成した部分リストはオレンジ,バナナ
と表示されます。
サブリストの作成方法を指定する
サブリストの作成方法を指定することができます。選択肢によって、数字の指定方法も変わります。
ここでは元のリストをリンゴ,オレンジ,バナナ,桃
とします。
作成方法の指定 |
指定例 |
結果 |
説明 |
#からサブリストを取得 |
2, 終了位置:3 |
オレンジ,バナナ |
2番目から3番目まで |
端から#のサブリストを取得 |
2, 終了位置:3 |
バナナ |
リストの長さ(4)から2を減じた、2番目の次(3番目)から3番目まで |
最初からサブリストを取得 |
終了位置:3 |
リンゴ,オレンジ,バナナ |
リストの最初から3番目まで |
指定の値が最初(最後)に出てくる箇所を探す
リストに指定したアイテムが最初または最後に出現する箇所を探し、その数値(N番目)を返します。
図の場合は「2」を返します。
図の例でブロックの条件を「最後の出現箇所」とした場合は「4」を返します。
リストが空かどうか調べる
リストが空、つまり要素が一つも含まれていない場合にtrue
を返します。そうでない(一つ以上の要素が含まれている)場合はfalse
を返します。
検索結果が見つからない場合にエラーとする、という場合は次のようなブロックになります。
リストの長さを調べる
リストに含まれている要素の数を返します。
検索結果が1件以上ある場合にエラーとする、という場合は次のようなブロックになります。
項目AをN回繰り返したリストの作成
指定した値を複数回繰り返してリストを作成します。図の場合、"*;" を5回繰り返したリスト(*,*,*,*,*)が作成されます。
リストのコピーを逆順にする
リストを逆順にします。図の場合、「いちご,りんご,メロン,マンゴー,レモン」の順で返します。
指定位置に項目をセットする
「指定位置に項目をセットする」ブロックを使うと、リストに値を加えることができます。
空のリストに値をセットするには次のようにします。要素は "1" から数えます。
デバッグ用ウィンドウには リンゴ,オレンジ,バナナ
と表示されます。
挿入
リストの途中要素に値を挿入することができます。
デバッグ用ウィンドウには 桃,リンゴ,オレンジ,バナナ
と表示されます。
リストのコピーを並び替える
リストの並び替えを行うブロックです。数値とアルファベットを昇順/降順に並び替えます。
アルファベット順の場合、大文字を含む文字列が優先され、小文字は大文字を含む文字列より後ろに並びます。
アルファベット順(大文字・小文字の区別無し)の場合は小文字が優先され、大文字を含む文字列とともにアルファベット順に並びます。それぞれ、次のような出力結果になります。
種類 |
並び順 |
結果 |
アルファベット順 |
昇順 |
James,Liam,Noah,Oliver,liam |
アルファベット順(大文字・小文字の区別無し) |
昇順 | James,liam,Liam,Noah,Oliver |
数値順 |
昇順 |
23,68,97,123,124 |
テキストとリストの変換
テキスト(文字列)とリストを相互に変換することができます。
テキストからリストを作る
テキストからリストを作ることができます。区切り文字を指定します。この例ではわかりにくいですが、各要素が空白(スペース文字)で区切られており、区切り記号も1つの空白を指定しています。
デバッグ用ウィンドウには リンゴ,オレンジ,バナナ,桃
と表示されます。
類似のブロックに SPLIT があります。両者は空白要素の扱いが異なります。SPLIT は空白要素を無視します。
リストからテキストを作る
リストからテキストを作ることもできます。同じように区切り文字を指定します。ここでは区切り文字を "," と指定しました。
デバッグ用ウィンドウには リンゴ,オレンジ,バナナ,桃
と表示されます。
類似のブロックに JOIN があります。両者は空白要素の扱いが異なります。JOIN は空白要素を無視します。
[応用] モデルの検索結果からリストを作成する
モデルのデータを取得するブロックを使うと、条件に合致した(複数の)モデルの検索結果をリストとして扱うことができます。
詳細は「モデルの操作 > 取得(リスト)」をお読みください。
[応用] モデルの項目からリストを作成する
サンプルとして「ミニテスト」モデルを用意してみます。これはミニテストの実施日、教科、生徒の組み合わせで点数を管理しています。
ミニテストごとの成績管理を行います。具体的には最大値、最小値、平均値、中央値、標準偏差を管理する、とします。
ミニテスト成績管理の登録時に「実施日」と「教科」を検索条件とし、ミニテストのリストをつくってみましょう。
モデルのデータを取得するブロックを使い、検索条件に(ミニテスト成績管理モデルの)主キー値をセットします。
次のブロックで、ミニリストの「点数」だけを集めた、「点数リスト」を用意することができます。
最初に空のリストを用意し、「指定位置に項目を設定する」ブロックを使ってミニリストの点数項目だけを集めています。
リストの最大値や最小値を取得するブロックと組み合わせることで、計算処理を行います。