只是有一個關於python的快速問題。我想知道是否有任何簡單的Python的方式採取兩個列表,如:查找兩個列表中相同順序的常見元素Python
a = ['t', 'o', 'a', 'c']
b = ['c', 't', 'a', 'o']
,然後返回常見元素/字符,同時也是相互相同順序的兩個列表之間英寸
# possible outputs for this list could be either:
output: ['t', 'a']
output: ['t', 'o']
我最初開始與兩個列表,並提取匹配的元素 同時仍通過這樣維持秩序的機智:
c = ['z', 't', 'o', 'g', 'a', 'c', 'f']
d = ['e', 'q', 'c', 't', 'a', 'o', 'y']
a = [x for x in c if x in d]
b = [x for x in d if x in c]
哪位能給我原來的A和B名單。然而,我無法找到一個進一步減少這一點。嘗試使用集合,但不保留元素的順序。我知道一個簡單的方法可能只是爲了和n^2比較一個列表到另一個到位,但我試圖避免這一點,並找到一個解決方案,可以找到兩個列表中最大的匹配相對於彼此。
你嘗試過什麼?你有沒有看過拓撲排序? – Alex
'a'是同一順序中唯一的元素,不應該是結果嗎? – Neil
@nfnneil,'a'處於相同的位置/索引,我想OP在詢問元素之間的相對順序('c'在'a'的'o'之後但在'b'之前) –