前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题-python3 找出列表中出现的所有连续数字

面试题-python3 找出列表中出现的所有连续数字

作者头像
上海-悠悠
发布2021-04-09 17:02:01
1.8K0
发布2021-04-09 17:02:01
举报
文章被收录于专栏:从零开始学自动化测试

前言

找出一个列表中,所有出现的连续数字,如列表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]

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

代码语言:javascript
复制
"""
# 作者-上海悠悠 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],不考虑数字的顺序

代码语言:javascript
复制
"""
有一个列表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]

还有一种反向思维的判断,更简洁一点

代码语言:javascript
复制
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 = []
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 判断列表中数字连续
  • 找出列表中连续数字
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档