List 在netlogo中更新列表中项目的值

List 在netlogo中更新列表中项目的值,list,netlogo,agent-based-modeling,List,Netlogo,Agent Based Modeling,我有4个生产商,他们有不同的属性,比如他们的新产品的价格、大小、客户价格。我定义了4个代表它们的列表 设置附件价格((列表p1 pr p2 pr p3 pr p4 pr));4家生产商所有产品的价格 set att-size ((list p1-sz p2-sz p3-sz p4-sz)) set att-rates ((list p1-rt p2-rt p3-rt p4-rt)) 随着时间的推移,价格会不断更新,因此我定义了以下内容: 套装(项目0附件价格)(项目0附件价格)*0.20

我有4个生产商,他们有不同的属性,比如他们的新产品的价格、大小、客户价格。我定义了4个代表它们的列表

设置附件价格((列表p1 pr p2 pr p3 pr p4 pr))
;4家生产商所有产品的价格

set att-size ((list p1-sz p2-sz p3-sz p4-sz))



set att-rates ((list p1-rt p2-rt p3-rt p4-rt))
随着时间的推移,价格会不断更新,因此我定义了以下内容:

套装(项目0附件价格)(项目0附件价格)*0.20
;第一生产商产品价格的变化

set (item 1 att-price) (item 1 att-price) * 0.08

set (item 3 att-price) (item 3 att-price) * 0.43
但它有一个错误,说“这不是你可以设置的”

那么我如何更新这些项目呢? 谢谢你用这个。例如:

set att-price replace-item 0 att-price (0.2 * item 0 att-price) 
也就是说,我们不是设置列表中的项目,而是创建一个新列表,替换该项目,然后将列表变量设置为该项目

如果要同时替换所有项目,可以使用。例如,您可能有一个价格变化的价格比率列表:

let ratios [ 0.2 1.0 0.08 0.43 ]
set att-price (map [ [ price ratio ] -> price * ratio ] att-price ratios)

谢谢我使用
set att price replace item 0(0.2*item 0 att price)att price
替换
set(item 0 att price)(item 0 att price)*0.20
但发现一个错误,即“replace item”预期此输入为字符串或列表,但得到了一个数字。@user710新值排在最后:非常感谢Alan。是,通过执行
设置附件价格替换项目0附件价格(0.2*项目0附件价格)
,它运行良好:)