为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

梦里花落0921 2022-06-14 16:46:00
我有一个 3 元素元组,其中一个元素与其他两个不同。例如,它可能是这样的:(0.456, 0.768, 0.456).找到这个不同元素的索引的最简单方法是什么?我能想到的一种方法是考虑索引(0, 1),(1, 2)其中之一将是不同的。如果是,(0, 1)则将它们的元素与 at 的元素进行2比较,否则将 的元素(1, 2)与索引进行比较0以找到不相似的元素。感觉就像我错过了一种pythonic方式来做到这一点。
查看完整描述

4 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

一个简单的方法:


def func(arr):

    x, y, z = arr

    return 2 * (x == y) + (x == z)

测试:


func(['B', 'A', 'A'])

# 0


func(['A', 'B', 'A'])

# 1


func(['A', 'A', 'B'])

# 2


查看完整回答
反对 回复 2022-06-14
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

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

my_tuple[[my_tuple.count(x) for x in my_tuple].index(1)]


查看完整回答
反对 回复 2022-06-14
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

你可以试试这个:

index = [my_tuple.index(i) for i in my_tuple if my_tuple.count(i) == 1][0]

我不确定它在性能方面是否很棒。


查看完整回答
反对 回复 2022-06-14
?
HUH函数

TA贡献1836条经验 获得超4个赞

在 python 3 中可能看起来像一个巨大的矫枉过正,但忍不住发布:


import collections

a = (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)查找索引。


查看完整回答
反对 回复 2022-06-14
  • 4 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号