Netlogo:“地图”是否仅限于两个列表?
Netlogo: is ´map´ limited to two lists?
当我在 NL 6.1.1 上尝试以下命令时:
(map + [1 2 3] [2 4 6] [7 8 9])
我得到的结果是 [3 6 9]
而不是 [10 14 18]
,这意味着总和中只考虑了前两个列表。
有人知道如何更正此问题并考虑所有三个列表吗?
根据 the documentation in the NetLogo dictionary,map
报告者确实支持多个列表,但是 map
希望提供的匿名报告者采用与您提供的列表数量相等的参数。在您的情况下,您不能使用 +
快捷方式,因为 +
需要 2 个参数,而我们有 3 个列表。
所以你可以这样做:
(map [ [a b c] -> a + b + c ] [1 2 3] [2 4 6] [7 8 9])
如果您需要处理添加任意数量的列表(如在一个列表变量中,根据您的程序,其中可能包含 2、3、4 或更多列表),您可以使用 the reduce
reporter:
set vals [[1 2 3] [2 4 6] [7 8 9] [10 11 12]]
reduce [ [a b] -> (map + a b) ] vals
当我在 NL 6.1.1 上尝试以下命令时:
(map + [1 2 3] [2 4 6] [7 8 9])
我得到的结果是 [3 6 9]
而不是 [10 14 18]
,这意味着总和中只考虑了前两个列表。
有人知道如何更正此问题并考虑所有三个列表吗?
根据 the documentation in the NetLogo dictionary,map
报告者确实支持多个列表,但是 map
希望提供的匿名报告者采用与您提供的列表数量相等的参数。在您的情况下,您不能使用 +
快捷方式,因为 +
需要 2 个参数,而我们有 3 个列表。
所以你可以这样做:
(map [ [a b c] -> a + b + c ] [1 2 3] [2 4 6] [7 8 9])
如果您需要处理添加任意数量的列表(如在一个列表变量中,根据您的程序,其中可能包含 2、3、4 或更多列表),您可以使用 the reduce
reporter:
set vals [[1 2 3] [2 4 6] [7 8 9] [10 11 12]]
reduce [ [a b] -> (map + a b) ] vals