Kdbplus-q-language-indexing

提供:Dev Guides
移動先:案内検索

Q言語-インデックス作成

リストは、そのアイテムの位置によって左から右に並べられます。 リストの先頭からのアイテムのオフセットは、インデックス*と呼ばれます。 したがって、最初のアイテムにはインデックス0があり、2番目のアイテム(ある場合)にはインデックス1があります。 カウント *n のリストには、 0 から n–1 までのインデックスドメインがあります。

インデックス表記

リスト L を指定すると、インデックス i のアイテムは L [i] によってアクセスされます。 インデックスでアイテムを取得することを*アイテムインデックス作成*と呼びます。 例えば、

q)L:(99;98.7e;`b;`abc;"z")

q)L[0]
99

q)L[1]
98.7e

q)L[4]
"z

インデックス付き割り当て

リスト内のアイテムは、アイテムのインデックス作成によって割り当てることもできます。 したがって、

q)L1:9 8 7

q)L1[2]:66     /Indexed assignment into a simple list
               /enforces strict type matching.

q)L1
9 8 66

変数からのリスト

q)l1:(9;8;40;200)

q)l2:(1 4 3; `abc`xyz)

q)l:(l1;l2)              /combining the two list l1 and l2

q)l
9 8 40 200
(1 4 3;`abc`xyz)

参加リスト

2つのリストで最も一般的な操作は、それらを結合してより大きなリストを作成することです。 より正確には、結合演算子(、)は、右のオペランドを左のオペランドの最後に追加し、結果を返します。 いずれかの引数でアトムを受け入れます。

q)1,2 3 4
1 2 3 4

q)1 2 3, 4.4 5.6    /If the arguments are not of uniform type,
                    /the result is a general list.
1
2
3
4.4
5.6

ネスティング

データの複雑さは、リストをリストのアイテムとして使用して構築されます。

深さ

リストのネストのレベル数は、その深さと呼ばれます。 原子の深さは0で、単純リストの深さは1です。

q)l1:(9;8;(99;88))

q)count l1
3

これは2つの項目を持つ深さ3のリストです-

q)l5
9
(90;180;900 1800 2700 3600)

q)count l5
2

q)count l5[1]
3

深さでのインデックス作成

ネストされたリストのアイテムに直接インデックスを付けることができます。

繰り返しアイテムのインデックス作成

単一のインデックスを介してアイテムを取得すると、常にネストされたリストから最上位のアイテムが取得されます。

q)L:(1;(100;200;(300;400;500;600)))

q)L[0]
1

q)L[1]
100
200
300 400 500 600

結果 L [1] はそれ自体がリストであるため、単一のインデックスを使用してその要素を取得できます。

q)L[1][2]
300 400 500 600

単一のインデックス作成をもう一度繰り返して、最も内側のネストされたリストからアイテムを取得できます。

q)L[1][2][0]
300

これを読むことができます、

_Lからインデックス1のアイテムを取得し、インデックス2のアイテムを取得し、インデックス0のアイテムを取得します。

深さでのインデックスの表記

ネストされたリストの構成要素に繰り返しインデックスを付けるための代替表記法があります。 最後の取得は、次のように書くこともできます。

q)L[1;2;0]
300

インデックスを介した割り当ても詳細に機能します。

q)L[1;2;1]:900

q)L
1
(100;200;300 900 500 600)

除外インデックス

一般リストの指標の除外

q)L:((1 2 3; 4 5 6 7); (`a`b`c;`d`e`f`g;`0`1`2);("good";"morning"))

q)L
(1 2 3;4 5 6 7)
(`a`b`c;`d`e`f`g;`0`1`2)
("good";"morning")

q)L[;1;]
4 5 6 7
`d`e`f`g
"morning"

q)L[;;2]
3 6
`c`f`2
"or"
  • L [; 1;]を次のように解釈*

最上位の各リストの2番目の位置にあるすべてのアイテムを取得します。

  • L [;; 2]を次のように解釈*

2番目のレベルの各リストの3番目の位置にあるアイテムを取得します。