List 将未指定数量的列表插入列表[Netlogo]
一般问题:我有一个报告器,它是一个品种所有变量的列表。这个列表中的每个勾号都会发生变化,我想要的是创建一个列表,为每个勾号存储这个品种拥有的变量列表 具体地说:我记录了海龟品种(这里是蚂蚁)的“年龄”。我通过以下途径将它们报告到“蚁巢年龄”列表中List 将未指定数量的列表插入列表[Netlogo],list,netlogo,List,Netlogo,一般问题:我有一个报告器,它是一个品种所有变量的列表。这个列表中的每个勾号都会发生变化,我想要的是创建一个列表,为每个勾号存储这个品种拥有的变量列表 具体地说:我记录了海龟品种(这里是蚂蚁)的“年龄”。我通过以下途径将它们报告到“蚁巢年龄”列表中 to-report nest_age_dist let nest-ages-list [nest-age] of ants report (list [nest-age] of ants) end 如果我给这位记者打电话,我会在每一个滴答
to-report nest_age_dist
let nest-ages-list [nest-age] of ants
report (list [nest-age] of ants)
end
如果我给这位记者打电话,我会在每一个滴答声(数字代表年龄)中得到如下信息:
这很好,但希望每个列表中都有一个勾号添加到包含它们的列表中。比如我想要
[[1 1 1 1 2 2 2 3 3 3 ][2 2 2 2 3 3 3 4 4 4][3 3 3 3 4 4 4 5 5 5]]
在哪里
[[tick 1 nest_age_dist ] [tick 2 nest_age_dist ] [tick 3 nest_age_dist ] [tick n nest_age_dist]]
我希望这是清楚的
看起来解决这个问题的方法应该很简单,但我不知道怎么做,而且我还没有找到解决stackoverflow的方法。NetLogo中的列表是不变的,这一事实让我感到震惊
作为补充说明,我必须这样做,因为当我使用BehaviorSpace时,我不能使用nest_age_dist reporter,因为当每个勾号都报告大列表时,创建的.csv太大,无法在我尝试过的任何文本编辑器(TextWrangler、Texteditor、Excel)中打开。一旦我有了我的列表(考虑到这个问题已得到解决),我只想报告列表中最后100个列表(巢龄列表)。我知道我可以多次运行较小的模拟,但如果我不能在一夜之间完成整个该死的事情,那又有什么意义呢
希望我的问题和提问动机都清楚。提前谢谢 如果您只想在say
biglist
中保留最近的100个nest age dist列表,您可以使用
let biglist ifelse-value (length biglist >= 100) [lput nest-age-dist but-first biglist] [lput next-age-dist biglist]
接下来,卢克C的回答也起到了作用,它看起来像:
globals [all_nest_age_list last_10]
turtles-own [age]
to setup
ca
crt 5 [
set age random 6
]
set all_nest_age_list []
set last_10 []
reset-ticks
end
to go
repeat 150 [
ask turtles [
set age age + 1
]
set last_10 ifelse-value (length last_10 >= 10)
[lput sort [age] of turtles but-first last_10]
[lput sort [age] of turtles last_10]
set all_nest_age_list lput ( sort [age] of turtles ) all_nest_age_list
]
let x 10 ;; however far back you want
let last_x_list sublist all_nest_age_list (length all_nest_age_list - x) (length all_nest_age_list)
print last_x_list
print last_10
end
我只保留了最近的10个,而不是100个。如果您想在say
biglist
中只保留最近的100个巢龄距离列表,您可以使用
let biglist ifelse-value (length biglist >= 100) [lput nest-age-dist but-first biglist] [lput next-age-dist biglist]
接下来,卢克C的回答也起到了作用,它看起来像:
globals [all_nest_age_list last_10]
turtles-own [age]
to setup
ca
crt 5 [
set age random 6
]
set all_nest_age_list []
set last_10 []
reset-ticks
end
to go
repeat 150 [
ask turtles [
set age age + 1
]
set last_10 ifelse-value (length last_10 >= 10)
[lput sort [age] of turtles but-first last_10]
[lput sort [age] of turtles last_10]
set all_nest_age_list lput ( sort [age] of turtles ) all_nest_age_list
]
let x 10 ;; however far back you want
let last_x_list sublist all_nest_age_list (length all_nest_age_list - x) (length all_nest_age_list)
print last_x_list
print last_10
end
我只保留了最近的10个,而不是100个。对你上次的回答,你可以使用
子列表。比如:
globals [
all_nest_age_list
last_x_list
]
turtles-own [
age
]
to setup
ca
crt 5 [
set age random 6
]
set all_nest_age_list []
end
to go
repeat 10 [
ask turtles [
set age age + 1
]
set all_nest_age_list lput ( sort [age] of turtles ) all_nest_age_list
]
let x 3 ;; however far back you want
set last_x_list sublist all_nest_age_list (length all_nest_age_list - x) (length all_nest_age_list)
print last_x_list
end
对于您在Hajz的最后一个答案,您可以使用子列表
。比如:
globals [
all_nest_age_list
last_x_list
]
turtles-own [
age
]
to setup
ca
crt 5 [
set age random 6
]
set all_nest_age_list []
end
to go
repeat 10 [
ask turtles [
set age age + 1
]
set all_nest_age_list lput ( sort [age] of turtles ) all_nest_age_list
]
let x 3 ;; however far back you want
set last_x_list sublist all_nest_age_list (length all_nest_age_list - x) (length all_nest_age_list)
print last_x_list
end
我无法让那段代码正常工作,但我在某种程度上解决了部分问题。下面,我将描述一下我现在正在努力解决的问题,因为您的回答似乎试图达到目的,但我在实施过程中遇到了困难。谢谢你的帮助!我无法让那段代码正常工作,但我在某种程度上解决了部分问题。下面,我将描述一下我现在正在努力解决的问题,因为您的回答似乎试图达到目的,但我在实施过程中遇到了困难。谢谢你的帮助!