有例子
(7.5 7.5;5.1 5.5;0.0 3.0;1.0 1.0)
index value
0 7.5 7.5
1 5.1 5.5
2 0 3f
3 1 1f
如果两个数字相等,如何将每对左边的数字替换为零?
示例输出
index value
0 0 7.5
1 5.1 5.5
2 0 3f
3 0 1f
谢谢
答案 0 :(得分:4)
一个简单的方法是使用each
副词。
{$[x[0]=x[1];0,x[1];x]} each (7.5 7.5;5.1 5.5;0.0 3.0;1.0 1.0)
此处,左侧的if / else函数获取两个项目列表,并返回列表,如果两个项目都匹配,则用0替换第一项目。每个副词将此功能分别应用于列表中的每对数字。
答案 1 :(得分:4)
您也可以在向量上使用点修改
q)a:(7.5 7.5;5.1 5.5;0.0 3.0;1.0 1.0)
q){.[x;(where (=) . flip x;0);:;0f]} a
0 7.5
5.1 5.5
0 3
0 1
答案 2 :(得分:3)
{(x[;0]*not x[;0]=x[;1]),'x[;1]} value
此功能应在列表长度很大时保持良好的性能