【发布时间】:2016-03-09 23:21:26
【问题描述】:
我正在尝试在必要时将值输入到列表列表中。
我在全局范围内定义一个列表:
set mylist [[[][]][[][]]]
在模拟的各个阶段,我希望让代理在列表中插入一个值(这些值将组成它们自己的列表)。例如,如果我想将值 2 添加到项目 1 的项目 0,我会输入:
....
set item 0 item 1 mylist lput 2 item 0 item 1 mylist
....
这会返回错误消息“这不是您可以使用“设置”的东西。”有什么帮助吗?我似乎对添加到列表有一个根本的误解。
仅供参考,我对上述示例的预期回报将是 mylist 变为:
[[[][]][[2][]]]
(如果需要,其他代理将有机会稍后在模拟中为项目 1 的项目 0 添加另一个值)。
谢谢
【问题讨论】:
-
你需要
replace-item。注意replace-item返回一个新列表; NetLogo 列表是不可变的,所以你需要set mylist replace-item ... -
感谢您的回复。这包括替换列表中的项目,但是是否可以将项目添加到列表中(使用 lput)而不是完全替换它?这是我仍然卡住的地方。
-
你考虑过表扩展吗?通过按键而不是按位置访问您的列表可能更直观。