好的,不知道這是否是最好的標題,但我有兩個python列表。 L1和L2都具有類型T的元素並且不具有相同的長度。對於兩個列表l1和l2,如何檢查所有e1∈l1,?p(e1,e2),其中e2是l2中的某個元素,在python中有效?
我有一個函數p(T,T),這是一個謂詞檢查關於類型T的兩個元素
我想檢查在L1所有元件E屬性,對(E,E ')成立,其中e'是L2中的一些元素。所以基本上,對於L1中的每個元素,我會遍歷第二個列表,並檢查謂詞是否適用於任何元素。但我也想檢查另一個列表的相同的東西。
p(T,T)是對稱的。所以如果p(e,e')那麼p(e',e)。由於這種對稱性,我不想兩次做同樣的事情。我需要以某種方式記錄,如果我看到p(e,e'),那麼我知道p(e',e),而不必再次檢查第二個列表。
什麼是在Python中做到這一點的最佳方法?我想每個列表中的每個元素e1有另一個字段,告訴我們p(e1,e2)是否成立,其中e2是另一個列表的成員。但我認爲這需要複製這兩個列表,所以我不會改變它們。有沒有什麼好方法可以做到這一點?
如果您願意按照您的建議做一些預計算,您可以隨時爲L1的每個元素執行O(1)次檢查。只需創建另外兩個列表LL1和LL2,這樣LL1 [i] == 1當且僅當LL1的第i個元素e1在L2中存在e1,使得p(e1,e2)。你可以記錄整個問題的答案(對於L1中存在的所有e1 ...) – Alejandro
好的,我使用該代碼編輯了我的問題。我不確定這是否正是你的意思,但如果是這樣,那麼它對我來說就很有意義。 – Lana
@Alejandro:那真的不能*保存*任何工作;預計算是'O(n ** 2)',它不是很可重用。 – user2357112