ListTools[SelectFirst] - リスト、集合、または rtable の特定の先頭要素の選択
ListTools[SelectLast] - リスト、集合、または rtable の特定の最後尾要素の選択
|
使い方
|
|
SelectFirst(p, L, b1, ..., bn)
SelectFirst(n, p, L, b1, ..., bn)
SelectLast(p, L, b1, ..., bn)
SelectLast(n, p, L, b1, ..., bn)
|
|
パラメータ
|
|
n
|
-
|
(オプション)整数;選択する要素数
|
p
|
-
|
(オプション)ブール値の選択プロシージャ
|
L
|
-
|
リスト、集合、または rtable;選択元のオブジェクト
|
b1, ..., bn
|
-
|
(オプション) p に渡される追加引数
|
|
|
|
|
モデルの説明
|
|
•
|
The SelectFirst(n, p, L, b1, ..., bn) 関数は p(e, b1, ..., bn) を満たす L の最初の n 個の要素 e を選択します。
|
•
|
SelectLast(n, p, L, b1, ..., bn) 関数は p(e, b1, ..., bn) を満たす L の最後の n 個の要素 e を選択します。
|
•
|
n が与えれらない場合、n のデフォルトの値は 1 となります。
|
•
|
n が負の値の場合、SelectFirst は L の最後尾から逆方向に検索を行い、SelectLast は L の先頭から順方向に検索を行いますが出力は逆になります。
|
•
|
p が与えられない場合、p のデフォルトの値は true を返す関数となります。
|
•
|
L が(配列、行列、またはベクトルなどの) rtable の場合、結果はこの関数を(他の引数はすべて同じ条件で) convert(L,list) に適用する場合と等価になります (convert/list を参照)。
|
•
|
n が与えられない場合、SelectFirst および SelectLast コマンドは求めた要素または NULL を返します。それ以外の場合は、L がリストまたは rtable の場合にはリストが返され、L が集合の場合は集合が返されます。
|
|
|
アプリケーションと例題
|
|
>
|
L := [seq(n, n=1..10)];
|
| (4.1) |
| (4.2) |
| (4.3) |
>
|
SelectFirst(isprime, L);
|
| (4.4) |
>
|
SelectLast(isprime, L);
|
| (4.5) |
>
|
SelectFirst(3, type, L, even);
|
| (4.6) |
>
|
SelectFirst(-3, type, L, odd);
|
| (4.7) |
>
|
SelectLast(3, type, L, odd);
|
| (4.8) |
rtables に適用されると、結果はリストに変換されます。
| (4.9) |
| (4.10) |
>
|
SelectLast(3, <1,2,3,4;5,6,7,8>);
|
| (4.11) |
集合で実行すると、結果はプラットフォームに依存することがあります。
>
|
S := {"abc", uvwxyz, 1, Int(sin(x),x)};
|
| (4.12) |
| (4.13) |
p(e, b1, ..., bn) がブールにならない場合、エラーが返されます。
>
|
SelectLast(3, isprime, [a,b,c]);
|
エラー、(ListTools:-SelectFirst 内で)この式が true か false かを決定できません:isprime(c)
| |
|
|