zoukankan      html  css  js  c++  java
  • 面试题-python3 找出列表中出现的所有连续数字

    前言

    找出一个列表中,所有出现的连续数字,如列表a=[1,2,3,8,6,7,5,10,16,98,99,100,101],不考虑数字的顺序
    连续的数字是指:123, 456, 78 这种,可以是连续的2个,也可以是多个,135 这种是不连续的。
    于是可以知道连续的数字是[1,2,3],[5,6,7,8], [98,99,100,101]

    判断列表中数字连续

    首先得知道如何判断列表中的数字是连续的
    x = [1,2,3,4]
    y = [5,6,8,9]

    可以用到栈的知识,定义一个空列表,当成一个栈,往里面添加数据,判断符合条件塞进去,不符合条件就直接结束判断

    """
    # 作者-上海悠悠 QQ交流群:717225969
    # blog地址 https://www.cnblogs.com/yoyoketang/
    判断列表中的数字是否连续
    x = [1,2,3,4]
    y = [5,6,8,9]
    """
    x = [1, 2, 3, 4]
    
    z = []
    flag = True
    for i in x:
        if len(z) == 0 or z[-1] + 1 == i:
            z.append(i)
        else:
            flag = False
            break
    print(flag)
    

    找出列表中连续数字

    找出一个列表中,所有出现的连续数字,如列表a=[1,2,3,8,6,7,5,10,16,98,99,100,101],不考虑数字的顺序

    """
    有一个列表a=[1,2,3,8,6,7,5,10,16,98,99,100,101] 不考虑数字的顺序
    找出连续的数字
    # 作者-上海悠悠 QQ交流群:717225969
    # blog地址 https://www.cnblogs.com/yoyoketang/
    """
    a = [1,2,3,8,6,7,5,10,16,98,99,100,101]
    s = []  # 空栈
    for i in sorted(set(a)):
        if len(s) == 0 or s[-1] + 1 == i:
            s.append(i)  # 入栈
        else:
            if len(s) >= 2:
                print(s)
            s = []    # 清空
            s.append(i)  # 入栈
    # 最后一轮,需判断下
    if len(s) >= 2:
        print(s)
    

    运行结果
    [1, 2, 3]
    [5, 6, 7, 8]
    [98, 99, 100, 101]

    还有一种反向思维的判断,这是群里一个小伙伴给出的,更简洁一点

    aa = [1, 2, 3, 8, 6, 7, 5, 10, 16, 98, 99, 100, 101]
    l1 = []
    for x in sorted(set(aa)):
        l1.append(x)
        if x+1 not in aa:
            if len(l1) != 1:
                print(l1)
            l1 = []
    
  • 相关阅读:
    [洛谷P2783]有机化学之神偶尔会做作弊
    %你赛题解
    TCP协议中的三次握手和四次挥手(图解)
    堆,栈,内存
    java原生数据类型和引用类型
    XHTML 是以 XML 格式编写的 HTML
    TCP和UDP?
    HTTP和HTTPS的区别?
    <!DOCTYPE> 声明
    ASCII和万国码
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/14604785.html
Copyright © 2011-2022 走看看