不同的函数是否将唯一属性应用于 q kdb 中的列表?

Does distinct function apply unique attribute to list in q kdb?

在应用于列表的 asc 函数的输出中,我们可以看到输出由排序的属性组成。

q)asc 1 3 11 10 4
`s#1 3 4 10 11

但是在列表上应用不同函数的输出中,我们看不到列表上应用的唯一属性。

q)distinct 1 3 11 10 4
1 3 11 10 4

但是,在不同列表和唯一列表(应用唯一属性的列表)中搜索元素所花费的时间几乎相同。

q)n:1000000?1000000
q)d:distinct n
q)\t:100000 d[1021]
45
q)\t:100000 d[632265]
45
q)u:`u#d
q)\t:100000 u[1021]
44
q)\t:100000 u[632265]
48

那么,distinct 函数是否在列表内部应用唯一属性并将其转换为散列 table?

distinct 没有将唯一属性应用于列表。您可能会在 attr 函数

的帮助下看到这一点
attr distinct 10?10

将return什么都没有`,当

attr `u#distinct 10?10

returns `u

另外,我认为实验可能是错误的:d[1021]似乎是通过索引获取元素的通常0(1)次操作。如果您改用搜索,您会看到差异(我电脑上的数字):

q)\t:10000 d?770751
85
q)\t:10000 u?770751 
6