如何从Netlogo中的未排序列表中删除多个项目

时间:2018-03-20 08:33:26

标签: netlogo

所以我对Netlogo中的列表有点挣扎,所以基本上我有两个列表,我想从列表2中删除列表1中的项目,例如:

清单1:[8 6 9 7 1 3]

清单2:[5 9 8]

结果清单:[6 7 1 3]

我尝试了以下代码,但它返回一个空列表:

if List 2 != []
   [ 
          foreach List 2 
          [
             let p position ? List 1 
             if p = true
                [
                  set List 1 remove-item p List 1
                ]
          ]
    ]

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

member?filter的组合可以帮助您:

let list1 [8 6 9 7 1 3]
let list2 [5 9 8]
let result filter [ x -> not member? x list2 ] list1
print result

将打印所需的内容:

[6 7 1 3]

提示:每当您发现自己试图在NetLogo中使用索引时,您可能无法以最佳方式执行操作。 NetLogo有很多功能(例如filter,在这种情况下),它们作为一个整体在列表上运行。很少需要明确地循环它们。