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

How to remove several items from a unsorted list in Netlogo

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

列表 1:[8 6 9 7 1 3]

列表 2:[5 9 8]

结果列表:[6 7 1 3]

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

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

有什么想法吗?

member? and 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,在本例中)作为一个整体对列表进行操作。很少需要明确地循环遍历它们。