我有一个等长列表的列表,例如
[[0 1 0] [2 3 0] [4 4 2] [0 1 0]]
如何获取列表[6 9 2]
,该列表对四个列表中的条目进行逐项汇总?
答案 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]
)。