一、题目
- 找出一个列表中,所有出现的连续数字。
如列表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]
二、程序
1、判断列表中数字连续
- 首先得知道如何判断列表中的数字是连续的
x = [1,2,3,4]
y = [5,6,8,9]
可以用到栈的知识,定义一个空列表,当成一个栈,往里面添加数据,判断符合条件塞进去,不符合条件就直接结束判断。
"""
#
判断列表中的数字是否连续
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)
2、找出列表中连续数字
- 找出一个列表中,所有出现的连续数字,如列表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] 不考虑数字的顺序
找出连续的数字
"""
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)
3、找出列表中连续数字2
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 = []
三、资料
(腾讯云)上海悠悠:
https://cloud.tencent.com/developer/article/1811345