使代理集不在列表中

时间:2017-05-10 15:15:16

标签: list foreach netlogo agentset

这与上一个问题有关。

如何将列表(代表海龟)转换为代理集?

例如,我想制作

agentset包含4个元素[龟0龟3龟4龟7]

out of list [“turtle 0”“turtle 3”“turtle 4”“turtle 7”]

我之前尝试过“foreach”。

提前谢谢〜!!

2 个答案:

答案 0 :(得分:2)

我不确定为什么你需要使用像

这样的列表
["turtle 0" "turtle 3" "turtle 4" "turtle 7"]
首先是

。将对代理的引用存储为除了直接引用代理之外的任何内容通常都不是一个好主意。

话虽这么说,你可以将这样的字符串转换为代理集:

turtle-set map runresult ["turtle 0" "turtle 3" "turtle 4" "turtle 7"]

如果这些海龟中的任何一只不存在,它们将被排除在最终的代理集之外。

尽管如此,整个事情让我感到有点不明智。如果你告诉我们更多你想要完成的事情,也许我们可以建议一个更好的方法。

答案 1 :(得分:0)

您是否因为某种原因而受限于使用字符串列表?如果没有,但您仍然想要一个列表,我建议您首先构建列表以包含代理。如果您稍后将其写入文件,则无论如何都会将其转换为字符串。在内部,直接使用代理更容易。

根据数字列表制作代理商列表:

globals [ turtle-list num-list]

to setup 
  ca
  reset-ticks

  crt 3   

  set num-list [ 0 1 2 ]
  set turtle-list map [ i -> turtle i ] num-list 
  print turtle-list      
end

请注意,如果列表包含不存在的乌龟的who号码,您的列表中会出现nobody

没关系这一切,只要按照@NicolasPayette说的那样做。

<德尔> 然后你*可以*使用`foreach`轻松地为你的'turtle-list`建立你的代理集:       foreach turtle-list [         t - &gt;         set turtle-agentset(turtle-set turtle-agentset t)       ] 但是,如果您的最终目标是代理集并且您不需要列表,则可以跳过一个步骤并直接构建代理集:     建立       CA       复位蜱       crt 3       set num-list [0 1 2]       设置turtle-agentset nobody       foreach num-list [         n - &gt;         set turtle-agentset(turtle-set turtle-agentset turtle n)       ]       print turtle-agentset     结束