List 如何在Netlogo中合并两个列表而不获得额外的括号?
我一直在尝试将两个列表,List 如何在Netlogo中合并两个列表而不获得额外的括号?,list,netlogo,List,Netlogo,我一直在尝试将两个列表,角度和距离,合并到一个新列表中,我想以一种方式来完成,即角度“第一个元素与距离中的前x个元素组合,如下所示: [[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. 我的问题是它看起来像这样: [[45 0.5] [45 1] [45 2] [135 0.5] [135 1] [135 2] etc
角度
和距离
,合并到一个新列表中,我想以一种方式来完成,即角度
“第一个元素与距离
中的前x个元素组合,如下所示:
[[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.
我的问题是它看起来像这样:
[[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.
换句话说,它在每两个项目周围都有括号,这些项目从角度具有相同的元素
我就是这样来到这里的:
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
让q0
让临时工“
而[q
列表1是角度,列表2是距离。我知道我可以用一种更简单、更有效的方式来做这件事,但目前我的首要任务当然是列出正确的清单。
提前感谢您的帮助 我相信这里的专业人士会想出一个更聪明的解决方案,但是试试这个:
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]]
使用匿名过程是个好主意-map
也适用于此:print(map[[l1 l2]>(list l1 l2)]list1 list2)
这样更好:代码行更少,结果相同。