带有 if 语句的 Netlogo foreach
Netlogo foreach with if statements
我有一个列表列表(里面有一个坐标列表),我想过滤内部列表的内容,如果它匹配一个结果,我想删除它。我无法遍历列表,然后遍历列表的第二个列表。
数据:
[[14.142135623730951 [-2 -16] "15"] [13.601470508735444 [-4 -17] "15"] [21.93171219946131 [-4 -17] "16"] [27.294688127912362 [-4 -17] "14"] [15.524174696260024 [-4 -17] "13"]]
我的尝试:
set coords [-4 -17]
foreach[distanceQueue]
[
if(item ? item 1 distanceQueue = coords)[set distanceQueue remove-item ? distanceQueue]
]
其中 item ?
应该是 foreach 循环的当前迭代,第 1 项应该是该数组的第二个元素。
任何人都可以帮助我完成这项工作吗?
听起来你在要求 filter
。例如,
to-report test
let lst [
[14.142135623730951 [-2 -16] "15"]
[13.601470508735444 [-4 -17] "15"]
[21.93171219946131 [-4 -17] "16"]
[27.294688127912362 [-4 -17] "14"]
[15.524174696260024 [-4 -17] "13"]
]
let coords [-4 -17]
report filter [[?] -> coords != item 1 ?] lst
end
我有一个列表列表(里面有一个坐标列表),我想过滤内部列表的内容,如果它匹配一个结果,我想删除它。我无法遍历列表,然后遍历列表的第二个列表。
数据:
[[14.142135623730951 [-2 -16] "15"] [13.601470508735444 [-4 -17] "15"] [21.93171219946131 [-4 -17] "16"] [27.294688127912362 [-4 -17] "14"] [15.524174696260024 [-4 -17] "13"]]
我的尝试:
set coords [-4 -17]
foreach[distanceQueue]
[
if(item ? item 1 distanceQueue = coords)[set distanceQueue remove-item ? distanceQueue]
]
其中 item ?
应该是 foreach 循环的当前迭代,第 1 项应该是该数组的第二个元素。
任何人都可以帮助我完成这项工作吗?
听起来你在要求 filter
。例如,
to-report test
let lst [
[14.142135623730951 [-2 -16] "15"]
[13.601470508735444 [-4 -17] "15"]
[21.93171219946131 [-4 -17] "16"]
[27.294688127912362 [-4 -17] "14"]
[15.524174696260024 [-4 -17] "13"]
]
let coords [-4 -17]
report filter [[?] -> coords != item 1 ?] lst
end