当前位置: 首页 > 面试题库 >

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

赖渊
2023-03-14
问题内容

如何以pythonic方式从排序列表中找到缺失的号码?

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

我看过这篇文章,但是有没有更有效的方法呢?


问题答案:
>>> a=[1,2,3,4,5,7,8,9,10]
>>> sum(xrange(a[0],a[-1]+1)) - sum(a)
6

或者(使用AP系列公式的总和)

>>> a[-1]*(a[-1] + a[0]) / 2 - sum(a)
6

对于可能缺少多个数字的一​​般情况,可以制定O(n)方法。

>>> a=[1,2,3,4,7,8,10]
>>> from itertools import imap, chain
>>> from operator import sub
>>> print list(chain.from_iterable((a[i] + d for d in xrange(1, diff))
                        for i, diff in enumerate(imap(sub, a[1:], a))
                        if diff > 1))
[5, 6, 9]


 类似资料:
  • 我试图在列表中找到中位数。找到中位数的等式是 N 项/2。我尝试的代码是查找并索引该数字,但是当我索引时,我得到0或错误,为什么会这样? 这就是我所做的我还尝试了索引 这让我得到0 我怎样做才能得到中位数?我知道已经存在这样一个问题,但我想尝试一种不同的方法。

  • 问题内容: 下面的代码检查和是不同的值(变量,,只能有值,或),并且如果是这样,套到第三个字符: 能否以更简洁,可读和有效的方式做到这一点? 问题答案: 我假设您的代码中的三种情况之一成立。在这种情况下,该集合将由单个元素组成,由返回。 编辑: 正如Raymond Hettinger在评论中所建议的那样,您还可以使用元组拆包从集合中提取单个元素:

  • 我有一个100个随机整数的列表。每个随机整数都有一个从0到99的值。重复是允许的,所以列表可以是这样的 我需要找到最小的整数( 我最初的解决方案是这样的: 但这需要一个用于记账的辅助数组和第二次(可能是完整的)列表迭代。我需要执行这个任务数百万次(实际应用程序是在贪婪的图形着色算法中,我需要用顶点邻接列表找到最小的未使用颜色值),所以我想知道是否有一种聪明的方法可以在没有太多开销的情况下获得相同的

  • 问题内容: 我明白 将导出列表中最常见的元素 但是如何在不使用辅助函数的情况下导出列表列表中最常见的元素? 例如 输出应等于。 当我尝试 它写道 谁能帮帮我吗? 问题答案: 有很多方法,但是我想让您知道,标准模块中有一些用于这类事情的好工具,例如: 或者,您可以(有点)将当前解决方案用于每个子列表:

  • 问题内容: 这个问题已经在这里有了答案 : 8年前关闭。 可能重复: Python:如何查找列表交集? 我在.txt中有两个数据列表 我想找出在两个列表中都出现的名字。我该怎么做? 问题答案: 使用集: 该运营商表示“给我这两个集合的交集” 或者,您可以使用以下方法:

  • 问题内容: LIST = [‘Python’,’problem’,’whatever’] print(LIST) 当我运行该程序时,我得到 是否可以从输出中删除该方括号? 问题答案: 您可以将其转换为字符串,而不是直接打印列表: 如果列表中的元素不是字符串,则可以使用(如果要在字符串周围加上引号)或(如果不需要)将它们转换为字符串,如下所示: 给出输出: