如何在使用嵌套列表中替换项目

时间:2014-04-20 13:13:04

标签: netlogo

替换嵌套列表?

例如

[[1 2][3 4] [5 1]]

[[99 2][3 4] [5 1]]

有人可以澄清Netlogo中列表的使用吗?

1 个答案:

答案 0 :(得分:3)

你的问题有点不明确。您想如何决定更改哪个项目?

我想你想通过索引来做到这一点,例如: "第0个子列表的第0项"。然后那个:

to-report replace-subitem [index1 index2 lists value]
  let old-sublist item index1 lists
  report replace-item index1 lists (replace-item index2 old-sublist value)
end

observer> show replace-subitem 0 0 [[1 2] [3 4] [5 1]] 99
observer: [[99 2] [3 4] [5 1]]

您还可以根据其他标准进行替换。例如,假设我们想要将子列表的第一项中的所有出现次数1更改为99.那么这就是:

to-report replace-first [old new the-list]
  if first the-list = old
    [ report replace-item 0 the-list new ]
  report the-list
end

to-report replace-firsts [old new lists]
  report map [replace-first old new ?] lists
end

observer> show replace-firsts 1 99 [[1 2] [3 4] [1 1]]
observer: [[99 2] [3 4] [99 1]]

许多其他答案也是可能的,具体取决于您正在尝试解决的问题。