如何使用添加元素到矩阵?

时间:2018-03-26 14:48:45

标签: netlogo

我想将一个列表中的多个项目添加到另一个列表中,该列表组织在一个大列表中,如矩阵。

let targetlists (list firstlist seccondlist thirdlist)

所以在我的double while循环中,我添加了这段代码;

set (item x targetlists) lput (item y sourcelist) (item x targetlists)

可悲的是,它给了我以下错误:

  

这不是你可以使用“设置”的东西。

我发现它与我如何选择目标列表有关,因为以下代码确实有效,但是没有做我想要的事情:

set firstlist lput (item y sourcelist) firstlist

1 个答案:

答案 0 :(得分:1)

JenB是正确的,一般来说,你使用replace-item。但是,将while循环替换为map会更有效。

我不完全确定您要尝试做什么,但看起来您正试图将sourcelist的元素放在targetlists的列表末尾。{ 1}}。即使这不是您正在做的事情,这也应该指向正确的方向:

set targetlists (map [ [ source-item target-row ] ->
  lput source-item target-row
] sourcelist targetlists)

这将一起遍历sourcelisttargetlists的项目,在对上调用lput

此外,还有一个方便的快捷方式,如果记者已经按照您的意愿行事,您可以直接将其传递给map。所以你可以将其浓缩为:

set targetlists (map lput sourcelist targetlists)

现在,鉴于您提到嵌套的while并且您正在使用两个不同的索引索引到两个列表,您可能会尝试将sourcelist的全部内容放到最后每个targetlists。如果是这样的话,你可以做到

set targetlists map [ l -> (sentence l sourcelist) ] targetlists

如果我完全离开,并且您尝试做一些完全不同的事情,请在评论中告诉我,我会更新我的答案。