我正在pygame中編寫一個簡單的Python(2.7)遊戲。在這個遊戲中,我必須存儲2D座標。這些項目的數量將從0開始並在每一步中增加2。他們會增加到6000。在每一步中,我都要檢查其中是否有9個特定的座標。我嘗試將它們簡單地存儲在列表中(x,y),但在這樣的列表中搜索效率不高。在Python中存儲和搜索座標的有效方法
如何存儲這些座標,以便在它們之間搜索效率更高?
我試圖在每一個步驟做:
# Assuming:
myList = []
co1 = (12.3,20.2) # and so on..
valuesToCheck = [co1,co2,co3,co4,co5,co6,co7,co8,co9]
# In each step:
# Adding 2 coordinates
myList.append((x1,y1))
myList.append((x2,y2))
# Searching 9 specific coordinates among all
for coordinate in valuesToCheck:
if coordinate in myList:
print "Hit!"
break
# Note that the valuesToCheck will change in each step.
del valuesToCheck[0]
valuesToCheck.append(co10)
座標是浮點數,他們的最高價值是有限的。他們從(0.0,0.0)到(1200.0,700.0)。
我搜索了這個,但存儲的值是字符串或常數。
是你需要的座標集做的唯一的搜索是9個特殊座標是否在那裏?這9個特殊的座標是否會改變(如果沒有,爲什麼不扔掉不匹配的2D點)?你需要在你的觀點上進行任何其他搜索? – angelatlarge
正如我在代碼部分中所添加的,這9個特殊座標也在每一步中改變。 雖然沒有其他搜索要做。 –
在這種情況下,我會保持簡單並使用字典。 http://stackoverflow.com/questions/1938614/in-what-case-would-i-use-a-tuple-as-a-dictionary-key – YXD