如何在q中过滤或搜索嵌套列表

AFo*_*Fox 1 kdb

说我有一个清单

list:(`a`b;`ac`d;`e`af)
Run Code Online (Sandbox Code Playgroud)

我想搜索所有符号喜欢a

(`a;`ac;`af)
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢?

如果我尝试使用

list where each list like "*c*" 
Run Code Online (Sandbox Code Playgroud)

(没有每个都适用于平面列表)我收到一个type错误

谢谢

Rya*_*ron 5

你的方法几乎就在那里 - like使用平面列表工作正常,但需要告诉你对左参数的每个元素进行操作:

q)list like\:"*c*"
00b
10b
00b
Run Code Online (Sandbox Code Playgroud)

然后where each,您可以使用每个-he(')来使用并应用回初始列表的每个元素:

q)list@'where each list like\:"*c*"
`symbol$()
,`ac
`symbol$()
Run Code Online (Sandbox Code Playgroud)

这将仅返回与like每个元素中的右参数匹配的元素,因此返回了空列表.