2011-07-13 45 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])