Netlogo 对列表的每个元素应用操作
我希望将列表中的每个元素除以一个数字,我尝试了以下方法: 方法1: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的不可变
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