kdb/Q 一个函数如何迭代x次?

kdb/Q How to iterate on a function x number of times?

提问人:mmv456 提问时间:11/1/2023 最后编辑:mmv456 更新时间:11/1/2023 访问量:64

问:

我是 kdb/Q 的新手,相当于迭代,我需要运行一个函数 10 次?

在 Python 中,这类似于创建某种迭代器,使用 while 循环运行函数并将 1 添加到迭代器,并在迭代器达到 10 时停止。

for-loop while-loop 迭代器 kdb

评论


答:

1赞 terrylynch 11/1/2023 #1

本机方法是使用累加器/迭代器/over/scan,如下所示: https://code.kx.com/q/ref/accumulators/#do

q){x+1}/[10;1000]
1010
q)
q){x+1}\[10;1000]
1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010

例如,运行 10 次,起始值为 1000{x+1}

还有一个关键字可用于执行操作 N 次,而无需携带一次运行的输出到下一次运行:https://code.kx.com/q/ref/do/do

评论

0赞 mmv456 11/1/2023
谢谢,如果我有一个函数更改了列表中的某些项目,并且我想运行 10 次怎么办?
0赞 terrylynch 11/1/2023
相同的概念,但这取决于您是否需要将中间值传递到下一次迭代中,或者是否可以只修改全局变量。例如 对{@[x;2?til count x;:;2?100]}\[10;1 2 3 4]list:1 2 3 4;do[10;@[`list;2?til count list;:;2?100]]
1赞 mmv456 11/1/2023
知道了,谢谢你的信息。我认为在这种情况下,Do 累加器会有所帮助。