当您想进行此类“查询”时,请考虑Boolean 掩码。
table ? 6 6?3 123 0 4 5 6 3 134 0 2 3 4 3 231 180 1 2 5 4 121 0 3 2 4 4 124 120 4 6 3 4 222 222 5
Run Code Online (Sandbox Code Playgroud)
让我们提取第一列:
table[;1]
3 3 3 4 4 4
Run Code Online (Sandbox Code Playgroud)
并指出哪些元素的值为 4:
table[;1] = 4
0 0 0 1 1 1
Run Code Online (Sandbox Code Playgroud)
类似地,我们可以指出第 3 列的哪些元素的值大于 0:
table[;3] > 0
0 0 1 0 1 1
Run Code Online (Sandbox Code Playgroud)
它们的交集(逻辑与)表示满足您的条件的所有行:
(table[;1] = 4) ? (table[;3] > 0)
0 0 0 0 1 1
Run Code Online (Sandbox Code Playgroud)
第一个 1 的索引是满足您的条件的第一行的行号:
((table[;1] = 4) ? (table[;3] > 0)) ? 1
5
Run Code Online (Sandbox Code Playgroud)
或者,我们可以使用最终掩码来过滤表并获取满足您的条件的所有行:
((table[;1] = 4) ? (table[;3] > 0)) ? table
4 124 120 4 6 3
4 222 222 5 3 5
Run Code Online (Sandbox Code Playgroud)
或者我们可以生成所有行号:
? 1 ? ? table
1 2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
然后使用我们的布尔掩码对其进行过滤,找到满足您的条件的所有行的行号:
((table[;1] = 4) ? (table[;3] > 0)) ? ? 1 ? ? table
5 6
Run Code Online (Sandbox Code Playgroud)