如何从列表中找到丢失的号码?

时间:2018-11-28 18:23:32

标签: python

我正在破坏列表中的缺失值。以及该问题的How to find a missing number from a list?

如何将缺失值包括在如下所述的列表范围之内?

a=[1,2,3,4,5,7,8,9,10]

sum(xrange(a[0],a[-1]+1)) - sum(a)

结果:6

1 个答案:

答案 0 :(得分:1)

它是如此简单。

尝试将其分解,这样会更容易理解:

  • xrange 为您提供了一个生成器,最终将为您提供 两个数字之间的整数作为此参数 功能。因此xrange(4,9)将给您(4,5,6,7,8)。所以主要 值得一提的是xrange在这里给出从4到9的整数(包括4 并且不包括9)
  • 现在 sum 函数只是将给定对象(此处为列表)中的值相加;我相信这里没有更多解释
  • 因此,在您的情况下,xrange(a [0],a [-1] +1)生成了一个生成器,该生成器从a [0]即1直到不包括a [-1] +1即11.请记住,在Python中,负索引是从后向引用的。因此a [-1]表示列表a中的最后一项。类似地,a [-2] = 9。
  • 因此,现在我们得到了b / w从1到10的所有数字的列表,并且总和给出了55,而a本身的总和等于49(因为它不包括6),所以差额就是您所缺少的值。

注意-此代码的一个问题是,如果缺少多个数字,它将导致这些缺失值的总和,而不是缺失值。因此,如果a = [1,2,3,5,8,9,10],则此代码将导致:

sum(1,2,3,4,5,6,7,8,9,10)-sum(1,2,3,5,8,9,10) and that will be equal to 17

在旁注 -xrange已从Python 3弃用,我想90%的人肯定会将此问题标记为一个不好的问题。