从外部列表过滤内部列表

时间:2018-08-21 09:02:30

标签: list netlogo

例如,如果我有一个类似下面的列表,您如何识别包含所有“ 0”的内部列表组?

crossOrigin

2 个答案:

答案 0 :(得分:2)

您可以使用filtern-values来检查过滤后的项目是否等于其长度等于零的数字:

to-report clean [ list_ ]
  report filter [ f -> f != n-values length f [0] ] list_
end

to check
  let all [[0 0 1303] [0 0 0] [0 0 0] [1303 0 0] [0 0 0] [0 1303 0] [0 0 0] [0 0 1303]]

  print clean all

  print clean [ [ 0 ] [ 0 1 ] [ 1 0 ] [ 0 0 ] [ 0 0 0 0 0 0 ] [ 1 0 0 0 ] ]  
end

运行check过程后的输出:

[[0 0 1303] [1303 0 0] [0 1303 0] [0 0 1303]]
[[0 1] [1 0] [1 0 0 0]]

答案 1 :(得分:0)

制定如下解决方案。有没有更好,更简单的方法? (例如,使用地图功能)

let a [[0 0 1303] [0 0 0] [0 0 0] [1303 0 0] [0 0 0] [0 1303 0] [0 0 0] [0 0 1303]] 
foreach a [x -> if (length filter [ i -> i > 0 ] x) = 0 [set a remove x a]] 
show a