我有一個元組列表,其中開始是空的,並附加了新的用戶生成的元組。Python:這個列表索引的值是否等於任何其他索引的值?
if left_mouse == True:
generic_list.append((mouse_position_x, mouse_position_y))
爲了防止具有相同的(X,Y)數據的多個元組,我要通過列表來迭代,並檢查最新的元組是相同的列表中的任何其它元組,並且如果它是,用新的元組替換舊的元組。
for tuple in tuple_list:
if tuple_list[-1].position == tuple_list[i].position:
tuple_list.remove(i)
我知道我得到的是錯誤的,但我不知道爲什麼或如何前進。任何幫助將非常感激。
編輯:我現在使用set(),它完美的工作。感謝大家。
你通過列表迭代,同時因爲你正在修改它。 – univerio
你爲什麼要用同樣的東西替換它?實際上,你爲什麼要添加它,而不是在添加之前檢查一個相等的元組是否在列表中? –
正如univerio所說的,從你正在迭代的列表中刪除項目是一個壞主意。這個問題顯示了原因:[從列表中刪除項目時出現奇怪的結果](http://stackoverflow.com/q/6260089/4014959)。此外,從列表中刪除項目是一項昂貴的操作,因爲所有後續項目都必須向下移動。順便說一句,你不應該使用'tuple'作爲變量名,因爲它會隱藏內置的'tuple'類型。 –