2017-09-25 75 views
-2

座標I有一個像的座標的列表:排序在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]

+3

以排序任何你需要一個排序順序(例如,按字母順序,按時間順序,通過距離等)。您將使用哪種邏輯對列表進行排序? – Guillaume

+2

你如何分類座標?你的預期產出是多少? –

+0

預期產量是多少? – GeekSambhu

回答

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

現在你有stringlist A S,你需要拆分成對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

+0

確實。請注意,如果您想首先按'x'排序,則不需要爲排序指定任何「鍵」。 –