Как я могу объединить два списка в Netlogo без дополнительных скобок? - PullRequest
0 голосов
/ 09 апреля 2019

Я пытался объединить два списка, angles и distance, в новый список, и я хочу сделать это так, чтобы первый элемент angles 'комбинировался с первыми элементами x в distance, вот так:

[[45 0.5] [45 1] [45 2] [135 0.5] [135 1] [135 2] etc.

Моя проблема в том, что это выглядит так:

[[[45 0.5] [45 1] [45 2]] [[135 0.5] [135 1] [135 2]] etc.

Другими словами, он имеет квадратные скобки вокруг каждой пары элементов, имеющих одинаковый элемент из angles.

Вот как я сюда попал:

    let q 0
  let temp ""
  while [ q < length list1 ]
  [
    let l item q list1
    let t 0
    while [t < 9] [
      let d item t coarse-distance-list
      set temp (word temp "[ " d " " l " ] ")
      set t t + 1
    ]
    set q q + 1
  ]
  set chromosomes temp

List1 - это углы, а list2 - это расстояние. Я знаю, что, вероятно, я могу сделать это более простым и эффективным способом, но на данный момент, конечно, правильное составление списка является моей первоочередной задачей. Заранее спасибо за любую помощь!

1 Ответ

1 голос
/ 10 апреля 2019

Я уверен, что профессионалы придумают более разумное решение, но попробуйте это:

to test

  let list1 (list 45 45 45 135 135 135)
  let list2 (list 0.5 1 2 0.5 1 2)
  let temp range length list1

  let result []

  foreach temp [ i ->
    set result lput ( list ( item i list1 ) ( item i list2  ) ) result

  ]

  show result

end

Это вернет вам:

observer> test
observer: [[45 0.5] [45 1] [45 2] [135 0.5] [135 1] [135 2]]
...