Arrays 如何找到数组的补码?

Arrays 如何找到数组的补码?,arrays,Arrays,如果我有一个排序的数值数组,如Double、Integer和Time,那么查找补码的一般逻辑是什么 在我大学的CS生涯中,我对范围的补充和边缘案例有了更好的理解。当我写这篇文章时,我帮助那些技能水平和理解能力与我相匹配的学生,我需要帮助他们找到一种通用的方法,将这一概念传达给他们,让他们了解单个元素和范围。使用列表理解,你可以找到两个列表的互补之处。这里我们取集合x相对于集合y的补码: >>> x = [1, 3, 5, 7, 10] >>> y = [1,

如果我有一个排序的数值数组,如
Double
Integer
Time
,那么查找补码的一般逻辑是什么


在我大学的CS生涯中,我对范围的补充和边缘案例有了更好的理解。当我写这篇文章时,我帮助那些技能水平和理解能力与我相匹配的学生,我需要帮助他们找到一种通用的方法,将这一概念传达给他们,让他们了解单个元素和范围。

使用列表理解,你可以找到两个列表的互补之处。这里我们取集合
x
相对于集合
y
的补码:

>>> x = [1, 3, 5, 7, 10]
>>> y = [1, 2, 3, 4, 8, 9, 20]
>>> z = [n for n in x if not n in y]
>>> z
[5, 7, 10]
>>>

要添加另一个选项-对于这些类型的操作,请使用始终有用的数据类型

a = set([1, 3, 5, 7, 10])
b = set(range(1, 11))
c = sorted(list(b.symmetric_difference(a)))
print(c)

[2, 4, 6, 8, 9]

试着这样做:

def complement(l, universe=None):
    """
    Return the complement of a list of integers, as compared to
    a given "universe" set. If no universe is specified,
    consider the universe to be all integers between
    the minimum and maximum values of the given list.
    """
    if universe is not None:
        universe = set(universe)
    else:
        universe = set(range(min(l), max(l)+1))
    return sorted(universe - set(l))
然后

收益率:

[2, 4, 6, 8, 9]
[0, 2, 4, 6, 8, 9, 11]
或者,您可以指定自己的宇宙:

complement(l, range(12))
收益率:

[2, 4, 6, 8, 9]
[0, 2, 4, 6, 8, 9, 11]

最简单的方法是从列表的开始到倒数第二个元素进行迭代。将
j
设置为等于
索引+1
。当
j
小于列表中的下一个数字时,将其追加到补码列表中并递增

# find the skipped numbers in a list sorted in ascending order
def getSkippedNumbers (arr):
    complement = []
    for i in xrange(0, len(arr) - 1):
        j = arr[i] + 1
        while j < arr[i + 1]:
            complement.append(j)
            j += 1
    return complement

test = [1, 3, 5, 7, 10]
print getSkippedNumbers(test) # returns [2, 4, 6, 8, 9]
#在按升序排序的列表中查找跳过的数字
def GetSkippedNumber(arr):
补码=[]
对于X范围内的i(0,透镜(arr)-1):
j=arr[i]+1
而j
如果我的列表==[1,3,5,7,10]:返回[2,4,6,8,9]
这是非常令人困惑的,因为除了10之外,你还可以得到每个数字的+。@legostrmtropr,因为如果我们仅仅因为写得不好而忽略所有问题,我们不会鼓励新用户提问。我们不应该鼓励这种类型的问题。该用户甚至没有为他们需要的东西编写规范,更不用说他们尝试过的东西了,但这仍然有5个答案。或者,你可以随意点击向下投票按钮,找到你认为不值得回答的问题的所有答案,试图将你的观点影响到其他人。我很想知道向下投票的原因,这样我就可以改进我的回答。我不是向下投票的人,但这是在一个审查队列中找到的。我猜有人不喜欢只使用代码的答案(倾向于让一些人在这里投票——我想你知道的是43k代表)。我猜在这里,
n&1
对某些人来说有点神秘,所以投票人可能想要解释一下。