首页 > 解决方案 > 如何从列表中找到丢失的号码?

问题描述

我打破了列表中的缺失值。以及附加在这个问题中如何从列表中找到丢失的号码?

如下所述,它如何在列表范围的总和中包含缺失值?

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

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

结果:6

标签: python

解决方案


它尽可能简单。

尝试分解它,它会更容易理解:

  • 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。
  • 所以现在我们得到了一个从 1 到 10 的所有数字的列表,并且 sum 给出了 55,并且 a 本身的总和等于 49(因为它不包括 6),所以不同的是你的缺失值。

注意 - 此代码的一个问题是,如果缺少 1 个以上的数字,它将导致这些缺失值的总和,而不是缺失值。所以如果 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% 确信这个问题将被标记为不好的问题。


推荐阅读