首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中查找缺少的数字

在python中查找缺少的数字
EN

Stack Overflow用户
提问于 2021-04-20 05:16:21
回答 3查看 301关注 0票数 0

我是编程的初学者。我看到了关于极客们缺少数字的挑战。所提出的解决办法对我来说相当复杂。我不知道我的解决方案是否正确,因为这似乎太容易了。谢谢!

代码语言:javascript
复制
A = [1, 2, 3, 4, 5, 7] 

def missing(): 
    for i in range (len(A)): 

        if A[i+1] != A[i] + 1:
            return A[i] + 1

missing()
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-04-20 05:23:49

这是你的例子,但清单理解。这将允许您返回所有缺失数字的列表。请记住,您的解决方案只适用于间隙== 1。

代码语言:javascript
复制
A = [1, 3, 4, 5, 7] 
def missing(A): 
    x = [A[i] + 1 for i in range (len(A)-1) if A[i+1] != A[i] + 1]
    return x

print(missing(A))

输出

代码语言:javascript
复制
[2, 6]
票数 2
EN

Stack Overflow用户

发布于 2021-04-20 05:25:50

我会说,您的代码非常不稳定,但它可能会起作用。

我想说这更有效

代码语言:javascript
复制
A = [1, 2, 3, 4, 5, 7] 

def missing():
    for i in range(len(A)): 
        result = 0

        if A[i+1] != A[i] + 1:
            result A[i] + 1

    return result
missing()

但如果1是缺失的数字呢?

下面的代码允许1是缺少的数字。

代码语言:javascript
复制
A = [1, 2, 3, 4, 5, 7] 

def missing():
    if A[0] != 1:
        result = 1
        return result

    for i in range(len(A)): 
        result = 0

        if A[i+1] != A[i] + 1:
            result A[i] + 1

    return result
missing()
票数 1
EN

Stack Overflow用户

发布于 2021-04-20 05:38:54

您只需检查从列表中的第一个元素到列表中的最后一个元素的数字范围内的每个数字是否存在于列表中。

for 循环

代码语言:javascript
复制
>>> def missing_num(numlist):
        numlist.sort()
        missing = []
        for i in range(numlist[0], numlist[-1]+1):
            if i not in numlist:
                missing.append(i)
        return missing

>>> missing_num([1, 2, 3, 4, 5, 7])
[6]

列表理解

代码语言:javascript
复制
>>> def missing_num(numlist):
        numlist.sort()
        nums = list(range(numlist[0], numlist[-1]+1))
        return [i for i in nums if i not in numlist]

>>> missing_num([1, 2, 3, 4, 5, 7])
[6]

有一些随机列表:

代码语言:javascript
复制
>>> for _ in range(5):
    randlist = random.sample(list(range(10)), 7)
    print(randlist, missing_num(randlist))

    
[1, 2, 3, 4, 5, 7, 9] [6, 8]
[0, 1, 2, 5, 6, 7, 8] [3, 4]
[0, 1, 3, 4, 5, 6, 9] [2, 7, 8]
[2, 4, 5, 6, 7, 8, 9] [3]
[0, 2, 3, 4, 5, 7, 8] [1, 6]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67172850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档