NetLogo:从其他两个列表的关系中获取第三个列表



我想从两个上一个列表的关系中提取第三个列表。这是一个示例:

我在netlogo中有一个输出0和1列表的过程,我们称其为list_a:

let List_A [0 1 0 1 1 ]

0和1的位置总是根据与该问题无关的几个因素而有所不同。

有第二个与list_a相关的列表,称list_b:

let List_B [“residential” “industrial” “commercial” “farmland” “preservation”]

此列表项目的位置永远不会有所不同。

我要获得的第三个列表是list_b的项目,其位置与List_a中的位置相对应的位置为1。"农田"保存"],因为"住宅"one_answers"商业"的位置将与0相对应,因此从列表中删除。

在此代码中取得了一些进展,该代码输出具有值1:

的项目列表的列表
to-report comp-positions
report filter [ i -> item i List_A = 1 ] 
n-values (length List_A) [ i -> i ] 
end

,但不知道如何将其应用于List_b以获取第三个列表。

有关完整性,另外三种方式:

print map last filter [ p -> first p = 1 ] (map list List_A List_B)
print reduce sentence (map [ [a b] -> item a (list [] b) ] List_A List_B)
print reduce [ [acc val] ->
  ifelse-value (first val = 1) [ lput last val acc ] [ acc ]
] fput [] (map list List_A List_B)

可能有一个步骤,但也许使用mapfilter的组合?使用ifelse-valuemap可以产生零和" List_b"项目的列表,然后过滤到零:

to filter-map
  let List_A [0 1 0 1 1 ]
  let List_B [ "residential" "industrial" "commercial" "farmland" "preservation"]
  print filter [ i -> i != 0 ] ( map [ [ a b ] -> ifelse-value (a = 1) [b] [0] ] List_A List_B)
end

相关内容

最新更新