Netlogo:对元素长度相等的列表进行求和

时间:2018-08-01 13:08:59

标签: netlogo

我有一个等长列表的列表,例如

[[0 1 0] [2 3 0] [4 4 2] [0 1 0]]

如何获取列表[6 9 2],该列表对四个列表中的条目进行逐项汇总?

3 个答案:

答案 0 :(得分:2)

params

作为一个程序:

let _lst [[0 1 0] [2 3 0] [4 4 2] [0 1 0]] show reduce [[?1 ?2] -> (map + ?1 ?2)] _lst

答案 1 :(得分:1)

在名单上比较擅长的人会来并且更干净地执行此操作,但这是可行的。

to testme
  let inlist [[0 1 0] [2 3 0] [4 4 2] [0 1 0]]
  let outlist []
  let ii 0
  while [ii < length item 1 inlist ]
  [ let items map [ x -> item ii x ] inlist
    print items
    set outlist lput reduce [ [a b] -> a + b] items outlist
    set ii ii + 1
  ]
  print outlist
end

它的作用是创建第一个条目的列表(带有let items),然后将它们与reduce相加,然后移到第二个条目,等等。

您可能还想看看这个问题Netlogo: How to compute sum of items of lists within a list?,该问题适用于单个条目。

答案 2 :(得分:1)

我一直在寻找一种“单线”,最后生产出来:

to-report aggregate-lists [list-of-lists]
   report map [ i -> sum (map [li -> item i li] list-of-lists) ] range length item 0 list-of-lists
end

您将一个将所有列表的item i相加的报告者映射到索引range length item 0 list-of-lists的向量(在示例中为[0 1 2])。