zip - 2 つのリストまたはベクトルを合わせる
使い方
zip(f, u, v)
zip(f, u, v, d)
パラメータ
f - 2 項関数
u, v - リスト、行列、またはベクトル
d - (オプション) 値
|
説明
|
|
•
|
関数 zip は 2 項関数 f を 2 個のリスト/ベクトル u と v の成分に作用させ、以下のように定義される新しいリスト/ベクトル r を作ります。u の長さを m、v の長さを n とすると、新しいリスト/ベクトル r の長さは min( m, n ) で、r[i] = f( u[ i ], v[ i ]), i = 1..min(m, n) となります。
|
•
|
u と v が同じサイズの行列ならば、zip は 2 項関数 f を行列 u と v の対応する成分の組に作用させます。結果として得られる行列の ( i, j )-成分は f( u[i, j], v[i, j] ) となります。
|
•
|
オプションの 4 番目の引数 d が与えられると、2 つのリスト/ベクトルの長さが違うとき、f のデフォルト値として使われます。この結果、r は長さ max( m, n ) のリスト/ベクトルで r[i] = f( u[i], v[i] ), i = 1..min( m, n ) そして r[i] = f( t[i], d), i = 1+min( m, n )..max( m, n 、ここで t は u と v の長さの短い方、となります。
|
•
|
u と v が同じサイズの行列ならば、オプションの 4 番目の引数はエラーではありませんが、無視されます。
|
|
|
例
|
|
>
|
zip((x,y)->x+y,[1,2,3],[4,5,6]);
|
| (2.1) |
>
|
zip(gcd,[0,14,8],[2,6,12]);
|
| (2.2) |
>
|
zip((x,y)->x+y,[1,2,3],[4,5],0);
|
| (2.3) |
>
|
a := matrix(2,3,[1,2,3,4,5,6]):
b := matrix(2,3,[1,3,5,7,9,2]):
zip((x,y)->x+y,a,b);
|
| (2.4) |
| (2.5) |
>
|
a := matrix(3,4,[2,3,5,7,11,13,17,19,23,29,31,37]):
b := array(1..2,1..2,antisymmetric):
b[1,2] := 3:
zip((x,y)->x+y,a,b);
|
| (2.6) |
>
|
zip((x,y)->x+y,b,a,-1);
|
| (2.7) |
|
|