0

项目集是 {0,1,2}(长度为 3 的列表的索引),给定其中两个,我需要知道第三个。现在我有:

def missingint(i,j):
    return list(set([0,1,2]) - set([i,j]))[0]

这似乎很严厉。我需要一个整数,以便我可以调用mylist[k].

有没有更简单的方法来做到这一点?

4

2 回答 2

2

这是你要找的吗?

x=[1,4,5,6]
y=[1,4,6]
[i for i in x if i not in y]

编辑:另外,如果您确定只缺少一件物品,您可以这样做:

[i for i in x if i not in y][0]

将 int 从列表中取出

于 2013-08-08T18:13:17.770 回答
1

实际上,如果您正在寻找 [0,1,2] 集的解决方案,那么您可以简单地使用:

def missingint(i,j):
    return 3-i-j

很容易检查它是否有效(显然 - 它非常简单有效)

missingint(0,1) == 2
missingint(1,0) == 2
missingint(0,2) == 1
missingint(2,0) == 1
missingint(1,2) == 0
missingint(2,1) == 0

据我所知,python 中没有更简单的解决方案

一般情况下,它也适用于任何预定义的集合,如果您想准确找到一个缺失值

def missingint(whole_list , other_values):
    return sum( whole_list ) - sum( other_values )

例如对于 [0,3,13,24] 集,您可以声明

def missingint(i,j,k):
    return 40-i-j-k

等等

于 2013-08-08T18:19:32.627 回答