我有一个坐标列表,如:
[44.64,-123.11; 38.91,-121.99; 40.35,-122.28; 43.21,-123.36; 41.77,-122.58; 37.77,-122.42]
我需要对此列表进行排序。有什么建议吗?
编辑: 很抱歉没有分享预期的输出:
它应该是[44.64,-123.11; 43.21,-123.36; 41.77,-122.58; 40.35,-122.28; 38.91,-121.99; 37.77,-122.42]
答案 0 :(得分:1)
li = [44.64,-123.11;38.91,-121.99;40.35,-122.28;43.21,-123.36;41.77,-122.58;37.77,-122.42]
您的“列表”看起来更像string
,带有“;”和“,”分隔2D点及其值。我想你想要一个代表x和y坐标的list
个元组?首先,您需要将string
拆分为list
li = li.split(';')
现在您有list
个string
,您需要将其分成float
个值对。你可以用两个列表推导来做到这一点
li = [(float(a.split(',')[0]), float(a.split(',')[1])) for a in li]
现在你有一个list
坐标,你可以用某种方式排序。也许最小的x
首先是什么。使用Python的sorted
内置函数来做到这一点,例如
sorted_li = sorted(li, key=lambda x: x[0])
文档在这里,阅读它们。