在NetLogo中查找列表交集

时间:2014-11-14 11:14:28

标签: netlogo nested-lists

我有一个n个列表的列表,想要找到它们的交集,例如:

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

我找到了一个代码here来查找两个列表的交集:

to-report intersect [a b]
   report (filter [ member? ? b ] a)
end

但我无法弄清楚如何将这个概念扩展到多个列表。

1 个答案:

答案 0 :(得分:2)

哦!对于NetLogo不太受欢迎的reduce函数来说,这是一个非常好的用例。

鉴于您上面的intersect记者:

print reduce intersect [[1 2 3 4][0 4][4 1]]

会给你:

[4]

reduceintersect应用于第一个和第二个子列表,然后将intersect应用于该结果和第三个子列表,依此类推您在主列表中的子列表......