从外部列表中过滤内部列表
Filter inner lists from outer lists
例如,如果我有如下列表列表,你如何识别包含所有“0”的内部列表组?
[[0 0 1303] [0 0 0] [0 0 0] [1303 0 0] [0 0 0] [0 1303 0] [0 0 0] [0 0 1303]]
想出如下解决方案。有没有更好更简单的方法? (例如使用地图功能)
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
您可以使用 filter
和 n-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]]
例如,如果我有如下列表列表,你如何识别包含所有“0”的内部列表组?
[[0 0 1303] [0 0 0] [0 0 0] [1303 0 0] [0 0 0] [0 1303 0] [0 0 0] [0 0 1303]]
想出如下解决方案。有没有更好更简单的方法? (例如使用地图功能)
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
您可以使用 filter
和 n-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]]