在Python中排序坐标

时间:2017-09-25 11:00:20

标签: python

我有一个坐标列表,如:

[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]

1 个答案:

答案 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(';')

现在您有liststring,您需要将其分成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])

文档在这里,阅读它们。

https://docs.python.org/3.6/library/functions.html#sorted