如何从 Netlogo 中的代理创建一个有序的属性列表?
How to create an ordenaded list of properties from agent in Netlogo?
我用以下内容定义了我的海龟。
turtles-own[val1, posx,posy,value]
我已经定义了名为
的全局变量
x列表
列表
vallist
那我开始空了。
现在我想为任何海龟创建一个具有一个值的列表。
我做到了
to fillLists
set xlist lput posx xlist
set ylist lput posy ylist
set vallist lput value vallist
end
这被称为:
ask turtles[fillLists]
例如,如果我有 3 只海龟,名字为 val1
假设我们有:
t1 =[Mike, 1, 10, 100]
t2 =[Sasha, 2, 20, 200]
t3 =[Rocco, 3, 30, 300]
我想创建列表 l1,l2,l3,l4。
其中内容为:
l1= [Mike, Sasha, Rocco]
l2= [1,2,3]
l3= [10,20,30]
l4= [100,200,300].
但我尝试过的方法不起作用。因为列表 return 是空的。
发生了什么,是不是有什么错误?
我无法重现您的错误,因此您可能需要包含更多调用这些命令的代码。例如,如果我 运行 此处定义的 setup
:
globals [ nameslist xlist ylist vallist ]
turtles-own [ val1 posx posy value ]
to setup
ca
set nameslist []
set xlist []
set ylist []
set vallist []
crt 1 [ set val1 "Mike" set posx 1 set posy 10 set value 100 ]
crt 1 [ set val1 "Sasha" set posx 2 set posy 20 set value 200 ]
crt 1 [ set val1 "Rocco" set posx 3 set posy 30 set value 300 ]
ask turtles [ fill-lists ]
print nameslist
print xlist
print ylist
print vallist
reset-ticks
end
to fill-lists
set nameslist lput val1 nameslist
set xlist lput posx xlist
set ylist lput posy ylist
set vallist lput value vallist
end
我得到如下输出:
[Mike Rocco Sasha]
[1 3 2]
[10 30 20]
[100 300 200]
但是,您可能会发现仅使用 of
查询海龟中您感兴趣的变量会更简单。例如,下面的代码或多或少地完成了相同的输出,尽管它的使用可能取决于您的需要:
turtles-own [ val1 posx posy value ]
to setup
ca
crt 1 [ set val1 "Mike" set posx 1 set posy 10 set value 100 ]
crt 1 [ set val1 "Sasha" set posx 2 set posy 20 set value 200 ]
crt 1 [ set val1 "Rocco" set posx 3 set posy 30 set value 300 ]
print [val1] of turtles
print [posx] of turtles
print [posy] of turtles
print [value] of turtles
reset-ticks
end
输出:
[Sasha Mike Rocco]
[2 1 3]
[20 10 30]
[200 100 300]
我用以下内容定义了我的海龟。
turtles-own[val1, posx,posy,value]
我已经定义了名为
的全局变量x列表 列表 vallist
那我开始空了。 现在我想为任何海龟创建一个具有一个值的列表。
我做到了
to fillLists
set xlist lput posx xlist
set ylist lput posy ylist
set vallist lput value vallist
end
这被称为:
ask turtles[fillLists]
例如,如果我有 3 只海龟,名字为 val1 假设我们有:
t1 =[Mike, 1, 10, 100]
t2 =[Sasha, 2, 20, 200]
t3 =[Rocco, 3, 30, 300]
我想创建列表 l1,l2,l3,l4。 其中内容为:
l1= [Mike, Sasha, Rocco]
l2= [1,2,3]
l3= [10,20,30]
l4= [100,200,300].
但我尝试过的方法不起作用。因为列表 return 是空的。 发生了什么,是不是有什么错误?
我无法重现您的错误,因此您可能需要包含更多调用这些命令的代码。例如,如果我 运行 此处定义的 setup
:
globals [ nameslist xlist ylist vallist ]
turtles-own [ val1 posx posy value ]
to setup
ca
set nameslist []
set xlist []
set ylist []
set vallist []
crt 1 [ set val1 "Mike" set posx 1 set posy 10 set value 100 ]
crt 1 [ set val1 "Sasha" set posx 2 set posy 20 set value 200 ]
crt 1 [ set val1 "Rocco" set posx 3 set posy 30 set value 300 ]
ask turtles [ fill-lists ]
print nameslist
print xlist
print ylist
print vallist
reset-ticks
end
to fill-lists
set nameslist lput val1 nameslist
set xlist lput posx xlist
set ylist lput posy ylist
set vallist lput value vallist
end
我得到如下输出:
[Mike Rocco Sasha]
[1 3 2]
[10 30 20]
[100 300 200]
但是,您可能会发现仅使用 of
查询海龟中您感兴趣的变量会更简单。例如,下面的代码或多或少地完成了相同的输出,尽管它的使用可能取决于您的需要:
turtles-own [ val1 posx posy value ]
to setup
ca
crt 1 [ set val1 "Mike" set posx 1 set posy 10 set value 100 ]
crt 1 [ set val1 "Sasha" set posx 2 set posy 20 set value 200 ]
crt 1 [ set val1 "Rocco" set posx 3 set posy 30 set value 300 ]
print [val1] of turtles
print [posx] of turtles
print [posy] of turtles
print [value] of turtles
reset-ticks
end
输出:
[Sasha Mike Rocco]
[2 1 3]
[20 10 30]
[200 100 300]