【发布时间】:2018-08-03 04:41:14
【问题描述】:
我有一个等长列表的列表,例如
[[0 1 0] [2 3 0] [4 4 2] [0 1 0]]
我怎样才能得到列表[6 9 2],它总结了四个列表中的条目?
【问题讨论】:
标签: netlogo
我有一个等长列表的列表,例如
[[0 1 0] [2 3 0] [4 4 2] [0 1 0]]
我怎样才能得到列表[6 9 2],它总结了四个列表中的条目?
【问题讨论】:
标签: netlogo
let _lst [[0 1 0] [2 3 0] [4 4 2] [0 1 0]] show reduce [[?1 ?2] -> (map + ?1 ?2)] _lst
作为一个程序:
to-report aggregate-lists [list-of-lists]
report reduce [[?1 ?2] -> (map + ?1 ?2)] list-of-lists
end
【讨论】:
median(而不是 sum),不能像 reduce 那样连续处理。
更擅长列表的人会出现并更干净地执行此操作,但这很有效。
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? 这个问题,它适用于单个条目。
【讨论】:
我一直在寻找“单线”并最终制作了它:
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])。
【讨论】:
median 而不是 sum。