找出奇数位置的最优雅方法
我有一个包含 3 个字符串的列表,其中两个字符串始终相等。我想找出那个奇怪的。这些问题听起来非常简单,但我一直无法找到一种真正优雅的方法来做到这一点。
例如,列表lst = ['foo', 'bar', 'foo'], 应返回1。我目前的做法是这样的:
f = lambda x, y, z: {(0, 0): 0, (0, 1): 1}.get((x == y, x == z), 2)
ans = f(*lst)
这里有更好的方法吗?
回答
您可以查找最后一个值的第一次出现:
ans = (1, 0, 2)[lst.index(lst[2])]
或者,如果您对 index-1而不是2:
ans = 1 - lst.index(lst[2])