我正在Netlogo中寻找一种解决方案,以从具有最小对值的列表中获取值。
((value1,value2)(value1,value2)...)
例如,我有一个列表:
ListofLists = ((2,3)(5,8)(1,9))
我想选择具有最小第一值的列表。 ->在这里(1,9),然后写出第二个值。
Goal: Get 9!
我的尝试看起来像这样:
ListofLists = ((2,3)(5,8)(1,9))
let ChoosedList []
set ChoosedList min (item 0 ListofLists)
set ChoosedValue item 1 ChoosedList
您对此有解决方案吗?谢谢!
最简单的方法是按照每个子列表的第一个元素对列表列表进行排序,然后将已排序的列表中的第一个子列表的第二个元素进行排序。这是分阶段进行的:
let sorted-list sort-by [[a b] -> item 0 a < item 0 b] [[2 3] [5 8] [1 9]]
let ChoosedList first sorted-list
let ChoosedValue item 1 of ChoosedList
或一行,
let ChoosedValue item 1 first sort-by [[a b] -> item 0 a < item 0 b] [[2 3] [5 8] [1 9]]
sort-by
对于列表列表的排序非常有用。
希望这会有所帮助,查尔斯