Netlogo 对列表的每个元素应用操作

Netlogo 对列表的每个元素应用操作,netlogo,Netlogo,我希望将列表中的每个元素除以一个数字,我尝试了以下方法: 方法1: set item 0 (new-vec item 0 vec / number) set item 1 (new-vec item 1 vec / number) 给出错误这不是您可以使用的设置 方法2: foreach new-vec [ set ? ? / number] 似乎不起作用 请帮忙。提前感谢。这是因为它们是不可变的数据结构 如果你真的想要易变性,你可以一直使用,但是一旦你学会了正确使用NetLogo的不可变

我希望将列表中的每个元素除以一个数字,我尝试了以下方法:

方法1:

set item 0 (new-vec item 0 vec / number)
set item 1 (new-vec item 1 vec / number)
给出错误这不是您可以使用的设置

方法2:

 foreach new-vec
[ set ? ? / number]
似乎不起作用

请帮忙。提前感谢。

这是因为它们是不可变的数据结构

如果你真的想要易变性,你可以一直使用,但是一旦你学会了正确使用NetLogo的不可变列表,这几乎是不必要的:通常你所需要的就是这些

要将列表中的所有数字除以其他数字,请使用:

将列表
[1 5 10]
分配给
分割的vec

该操作通过对传递给它的列表的每个元素应用操作来构建新列表。在上面的示例中,我将新列表分配给一个新变量(
divided vec
),但如果需要,也可以将其分配回
new vec

set new-vec map [ ? / number ] new-vec
这将表现为您将
新vec
修改到位,尽管情况并非如此

如果要将操作仅应用于列表中的一个项目,可以结合使用和:


将显示:
[24006 8 10]

这是如何在NetLogo 6中执行此操作的,它更改了匿名过程,因此在:


如何在不使用前面的show的情况下使用replace item命令。一般来说,我的问题是,我们如何将任何操作应用于列表中的一项。我试图使用replace item it,但它给出了错误。
replace item
是一个报告程序,返回列表的修改副本。我使用
show
在命令中心打印该列表,但您可以对其执行任何操作:将其存储在变量中,将其作为参数传递给另一个过程,等等。至于您的其他问题,我建议您将其作为正式问题提问;评论不是提问和回答的好地方。当我使用map方法时,我收到一个错误,上面写着“未命名”。有人知道为什么会这样吗?非常感谢!您需要将代码转换为NetLogo 6语法:使用类似于
map[n->n/number]new vec
的内容,而不是
map[?/number]new vec
set new-vec map [ ? / number ] new-vec
let my-list [2 4 6 8 10]
show replace-item 1 my-list (item 1 my-list  * 100)
let new-vec [10 50 100]
let number 10
let divided-vec map [ i -> i / number ] new-vec