NETLOGO:将代理的属性列表添加到列表列表中
NETLOGO: adding lists of agents' attributes to a list of lists
您好,我正在使用 Netlogo,我正在尝试创建一个列表列表,其中每个子列表都是几个代理的属性。特别是我将列表声明为全局变量并将其初始化为空列表。然后我要求每个代理将他们的 attribute_1 和 attribute_2 的列表添加到主列表中。像这样:
globals[mainlist]
set mainlist []
ask agents[
set mainlist sentence [mainlist] [attribute_1 attribute_2 ]
]
这应该创建一个新列表,该列表由先前的主列表和列表 [attribute_1 attribute_2] 组成。
不幸的是,这不起作用,我收到错误:指的是 "mainlist" 的预期文字值。
我应该如何编写代码以正确的方式创建列表列表?
您可以使用 lput
或 fput
向列表添加更多元素(lput
将在末尾添加新列表项 (l=last),而 fput
将在前面添加新项目 (f=first))。
此外,当您想将变量存储在列表中时,您必须使用 (list ... ...)
原语而不是 [ ]
括号(括号仅适用于常量)。
这是一个工作示例:
globals[mainlist]
to test
ask n-of 20 patches [sprout 1]
set mainlist []
ask turtles
[
set mainlist lput (list xcor ycor) mainlist
]
print mainlist
end
Tyr 的回答在技术上是正确的,但我想建议一个更 netlogoish 的方法来做到这一点。通常,在 NetLogo 中,您不必一次构建一个元素的列表。如果您发现自己这样做,您可能想停下来并尝试以不同的方式解决问题。
在这种特殊情况下,您可以简单地利用 of
原语:
[ (list attribute_1 attribute_2) ] of agents
这是一个完整的示例:
breed [agents an-agent]
agents-own [attribute_1 attribute_2]
globals [mainlist]
to setup
clear-all
create-agents 10 [
set attribute_1 random 10
set attribute_2 random 10
]
set mainlist [ (list attribute_1 attribute_2) ] of agents
print mainlist
end
您好,我正在使用 Netlogo,我正在尝试创建一个列表列表,其中每个子列表都是几个代理的属性。特别是我将列表声明为全局变量并将其初始化为空列表。然后我要求每个代理将他们的 attribute_1 和 attribute_2 的列表添加到主列表中。像这样:
globals[mainlist]
set mainlist []
ask agents[
set mainlist sentence [mainlist] [attribute_1 attribute_2 ]
]
这应该创建一个新列表,该列表由先前的主列表和列表 [attribute_1 attribute_2] 组成。 不幸的是,这不起作用,我收到错误:指的是 "mainlist" 的预期文字值。 我应该如何编写代码以正确的方式创建列表列表?
您可以使用 lput
或 fput
向列表添加更多元素(lput
将在末尾添加新列表项 (l=last),而 fput
将在前面添加新项目 (f=first))。
此外,当您想将变量存储在列表中时,您必须使用 (list ... ...)
原语而不是 [ ]
括号(括号仅适用于常量)。
这是一个工作示例:
globals[mainlist]
to test
ask n-of 20 patches [sprout 1]
set mainlist []
ask turtles
[
set mainlist lput (list xcor ycor) mainlist
]
print mainlist
end
Tyr 的回答在技术上是正确的,但我想建议一个更 netlogoish 的方法来做到这一点。通常,在 NetLogo 中,您不必一次构建一个元素的列表。如果您发现自己这样做,您可能想停下来并尝试以不同的方式解决问题。
在这种特殊情况下,您可以简单地利用 of
原语:
[ (list attribute_1 attribute_2) ] of agents
这是一个完整的示例:
breed [agents an-agent]
agents-own [attribute_1 attribute_2]
globals [mainlist]
to setup
clear-all
create-agents 10 [
set attribute_1 random 10
set attribute_2 random 10
]
set mainlist [ (list attribute_1 attribute_2) ] of agents
print mainlist
end