我有一个列表,如果列表的前 3 项不为 0,我想对它们进行操作。我可以通过下面的代码对每个项目进行操作,但不知道如何对前 3 项进行操作。
foreach list2
[
if (item ? list2 != 0)
[
set candidatelist lput (item ? list3) candidatelist
]
]
Run Code Online (Sandbox Code Playgroud)
这是获取前 n 个元素的助手:
to-report take [n xs]
report sublist xs 0 min list n (length xs)
end
Run Code Online (Sandbox Code Playgroud)
现在我们可以写:
filter [x -> x != 0] take 3 ...
Run Code Online (Sandbox Code Playgroud)
样本运行:
observer> show filter [x -> x != 0] take 3 [1 0 3 4 5]
observer: [1 3]
Run Code Online (Sandbox Code Playgroud)
(这是 NetLogo 6 语法。在 NetLogo 5 中,写入[? != 0]而不是[x -> x != 0]。)
| 归档时间: |
|
| 查看次数: |
1434 次 |
| 最近记录: |