猿问

如何在三元素数组中找到唯一元素?

我有一个 3 元素元组,其中一个元素与其他两个不同。例如,它可能是这样的:(0.456, 0.768, 0.456).

找到这个不同元素的索引的最简单方法是什么?我能想到的一种方法是考虑索引(0, 1)(1, 2)其中之一将是不同的。如果是,(0, 1)则将它们的元素与 at 的元素进行2比较,否则将 的元素(1, 2)与索引进行比较0以找到不相似的元素。

感觉就像我错过了一种pythonic方式来做到这一点。


梦里花落0921
浏览 95回答 4
4回答

长风秋雁

一个简单的方法:def func(arr):    x, y, z = arr    return 2 * (x == y) + (x == z)测试:func(['B', 'A', 'A'])# 0func(['A', 'B', 'A'])# 1func(['A', 'A', 'B'])# 2

慕桂英3389331

您可以计算列表中每个元素的出现次数,然后找到仅存在一个元素的位置的索引,但我觉得这可能不如您的解决方案高效。如果所有 3 个值都不同,它也不起作用。my_tuple[[my_tuple.count(x) for x in my_tuple].index(1)]

子衿沉夜

你可以试试这个:index = [my_tuple.index(i) for i in my_tuple if my_tuple.count(i) == 1][0]我不确定它在性能方面是否很棒。

HUH函数

在 python 3 中可能看起来像一个巨大的矫枉过正,但忍不住发布:import collectionsa = (0.768, 0.456, 0.456)print("Dissimilar object index: ", a.index(list(collections.Counter(a).keys())[list(collections.Counter(a).values()).index(1)]))解释:collections.Counter(a): 将返回一个频率字典,例如{0.768:1, 0.456:2}等。然后我们只需创建一个列表来利用index(1)来找出奇怪的值。然后我们使用a.index(odd_one_out_val)查找索引。
随时随地看视频慕课网APP

相关分类

Python
我要回答