2011-07-13 76 views
2

是否有內置的內容來說明兩個列表之間的置換差異?例如。Python置換差異

difference("ijk", "ikj") = (0,2,1) 
difference("jik", "ikj") = (2,0,1) 
etc ... 

哎呀,算了,這裏是一個片段

[a.index(i) for i in b] 
+6

請定義'置換difference' – Daenyth

+1

這是一個謎,你必須首先弄清楚的問題是什麼:/ –

+0

@Dae指數變換一個列表進入另一個。 – Anycorn

回答

3

很簡單...

def difference(after, before): 
    return tuple(before.index(x) for x in after) 

print difference('ijk', 'ikj') # (0, 2, 1) 
print difference('jik', 'ikj') # (2, 0, 1) 
+0

看起來如果輸入集中有重複的話,這可能會導致「錯誤」的結果。我想這個問題需要更好的說明才能知道,儘管如此。 –

+0

好點。在這種情況下,可能有多個答案 - 這是不明確的。 – FogleBird

+0

例如,'difference('iii','iii')'可以從'(0,1,2)'到'(2,1,0)'和任何其他排列返回任何東西。但是這個解決方案會返回'(0,0,0)',這可能不好。 – FogleBird

2

是否足夠短?

tuple([s2.index(p) for p in s1])