在嵌套列表中查找成员 netlogo

finding member in nested lists netlogo

我正在尝试解决 netlogo 中的一个问题,这个问题让我卡住了一段时间。我有两个列表(我合作过的海龟和 "successful"/"unsuccessful" 判断)。这两个列表的映射方式如下 [[(​​turtle 10) "successful"] [(turtle 11) "unsuccessful"] 具有以下内容:

let general-history (map list collaborators my-success)

其中合作者是名人号码,我的成功是一个字符串("successful" 或 "unsuccessful")

现在,我想检查一只乌龟在它的通史列表中是否至少有一个成功的和一个不成功的合作者,以便能够继续。这是我到达的地方:

ifelse not empty? general-history and member? "successful " last general-history and member? "unsuccessful" last general-history

我知道这是错误的,因为这里的 last 意味着我只会查看通史的最后一个列表(即 [] [] [这个] ).我想要它做的是评估在整个一般历史嵌套列表中是否至少有两个列表(一个以 "successful" 作为索引 1,另一个以 "unsuccessful" 作为索引 1)。

foreach 在这里工作得更好还是仍然可以使用 member?但是有某种元素+列表索引?非常感谢您的帮助!

如果我没有正确理解您的问题,您可以使用 map 创建所有 last 项目的列表(成功与否),然后将 member? 应用于该列表.这是一个完整的模型示例,它构建了一些测试数据并应用了这种方法。

to testme
  clear-all
  ; create some test data
  create-turtles 10
  let collaborators sort n-of 3 turtles
  let list-both (map list collaborators (list "yes" "no" "no"))
  print list-both
  ; check condition
  print member? "yes" map last list-both
end