项目集是 {0,1,2}(长度为 3 的列表的索引),给定其中两个,我需要知道第三个。现在我有:
def missingint(i,j):
return list(set([0,1,2]) - set([i,j]))[0]
这似乎很严厉。我需要一个整数,以便我可以调用mylist[k]
.
有没有更简单的方法来做到这一点?
这是你要找的吗?
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 从列表中取出
实际上,如果您正在寻找 [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
等等