如何在netlogo中选择前n个列表项

时间:2015-08-20 13:42:25

标签: netlogo

我有一个列表,我想对前3项列表进行操作,如果它们不是0.i可以通过下面的代码对每个项目进行操作,但不知道如何对前3项进行操作。

foreach list2
[
 if (item ? list2 != 0) 
  [
   set candidatelist lput (item ? list3) candidatelist
 ]
]

2 个答案:

答案 0 :(得分:4)

这是获得前n个元素的帮手:

to-report take [n xs]
  report sublist xs 0 min list n (length xs)
end

现在我们可以写:

filter [? != 0] take 3 ...

示例运行:

observer> show filter [? != 0] take 3 [1 0 3 4 5]
observer: [1 3]

答案 1 :(得分:1)

我在下面写了代码来解决它:

let m 0
 foreach list2
  [
   if (m < 3)
    [
     if (item ? list2 != 0) 
      [
       set candidatelist lput (item ? list3) candidatelist
        ]
     set m m + 1
       ]
     ]