List 使代理集脱离列表

List 使代理集脱离列表,list,foreach,netlogo,agentset,List,Foreach,Netlogo,Agentset,这与刚才提出的问题有关 如何将列表(表示海龟)转换为代理集 例如,我想 包含4个元素的agentset[海龟0海龟3海龟4海龟7] 列表外[“海龟0”“海龟3”“海龟4”“海龟7”] 我以前试过“foreach” 提前谢谢你~ 您是否因为某种原因而被限制使用字符串列表?如果不是,但您仍然需要一个列表,我建议您首先构建包含代理的列表。如果您稍后将其写入文件,它将被转换为字符串。在内部,直接与代理合作要容易得多 要根据编号列表制作代理列表,请执行以下操作: globals [ turtle-list

这与刚才提出的问题有关

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

例如,我想

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

列表外[“海龟0”“海龟3”“海龟4”“海龟7”]

我以前试过“foreach”


提前谢谢你~

您是否因为某种原因而被限制使用字符串列表?如果不是,但您仍然需要一个列表,我建议您首先构建包含代理的列表。如果您稍后将其写入文件,它将被转换为字符串。在内部,直接与代理合作要容易得多

要根据编号列表制作代理列表,请执行以下操作:

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海龟列表[ t-> 设置海龟代理集(海龟设置海龟代理集) ] 但是,如果您的最终目标是一个agentset,并且不需要列表,则可以跳过一个步骤,直接构建agentset: 设置 ca 重置滴答声 阴极射线管3 设置数字列表[0 1 2] 设置海龟代理不设置任何人 foreach num列表[ n-> 设置海龟代理集(海龟设置海龟代理集海龟n) ] 打印海龟代理集 结束
我不知道你为什么需要这样的列表

["turtle 0" "turtle 3" "turtle 4" "turtle 7"]
首先。将对代理的引用存储为对代理的直接引用以外的任何内容通常不是一个好主意

也就是说,您可以使用以下命令将此类字符串转换为agentset:

turtle-set map runresult ["turtle 0" "turtle 3" "turtle 4" "turtle 7"]
如果这些海龟中的任何一只不存在,它们将被排除在结果代理集中


尽管如此,我还是觉得整件事有点不明智。如果您能告诉我们更多关于您试图实现的目标,也许我们可以提出一个更好的方法。

用户的前一个问题是,我强烈建议不要像您在回答的最后一部分中所做的那样,以增量方式构建agentset。添加到代理集的成本很高:每次添加一个代理时,NetLogo都需要重建整个代理集。然而,添加到列表非常便宜,因此如果你真的必须一次构建一个代理集一个代理,那么构建一个列表,然后使用
turtle set my list
将其转换为代理集会更快。太棒了,谢谢@NicolasPayette,我不知道你能做
turtle set my list
。你的评论的第一部分(“我建议您首先构建包含代理的列表。”)完全正确。所有问题都源于无法生成包含有效海龟的列表。即使海龟集也没有多大帮助。我是否可以从类似字符串生成正确形式的代理集?:从[“agent0”生成[[agent 0 agent 1]agent1“]谢谢你的评论,Nicolas:我试图通过某些数字引出一些代理的子集。这些数字是随着循环的进行而添加的:比如先[turtle 0],然后[turtle 0 turtle 3],[turtle 0 turtle 3 turtle 4]等等。你建议的方法是结果0代理,而不是4。但是我感觉像是“runresult”"我可以给出一些答案。再次感谢你~!!作为一般规则,尽量避免使用代理号码。这是一种迂回的做法,没有任何好处,而且常常会导致微妙的错误。就像卢克C所说:首先建立一个包含代理的列表。啊哈~!然后我可能会重新编写整个代码。谢谢你尼古拉斯的great help~!!:)有没有办法在循环进行时从代理集中按顺序减去代理?