2017-03-07 256 views
1

我发现这个代码对嵌套列表进行排序。对嵌套列表进行排序

to-report test 
    let z [[2 3] [1 9] [3 1] ] 
    report sort-by [(first ?1) < (first ?2)] z 
    end 

这个公式中的第一个和第一个是什么?它说他们没有被定义为变量。

+0

类似的解决方案,但用于再次1和2:??http://stackoverflow.com/questions/31545569/sorting-list-of-lists-by - 特别指数内部列表 – Nety

回答

2

您是否正在使用NetLogo v6.0?您的代码在v5.3.1中可用,但v6.0使用匿名记者。它看起来像:

to-report test 
    let z [[2 3] [1 9] [3 1] ] 
    report sort-by [[list1 list2] -> first list1 < first list2] z 
end 

查尔斯

+0

你好,问题是netlogo版本。谢谢你,但这只是排序前两个元素,但我想排序所有列表嵌套列表中。 – Nety

+0

这样做。它对列表中的所有子列表进行排序。 'z',按其各自的第一个元素。例如,如果'let z [[2 3] [1 9] [3 1] [0 100]',那么排序会将[0 100]放在排序列表的开始位置。你最初的代码建议你按照他们的第一个元素对子列表进行排序。那是你想要的吗?将'list1'和'list2'视为原始代码中的'?1'和'?2'。 – Charles

+0

你是对的,它排序的完整列表。我一直在编码时间过长,而我的大脑并没有处理最后一个和第一个。在完成排序后,更改项目标识(第一个/最后一个)可以更改元素。代码运行良好。谢谢 – Nety