[英]About a sequential list in python
如果我的列表采用以下格式:
a=[1,3,4,5,8,10]
如何显示元素不会增加1? 换句话说,如果我的名单是
a=[1,2,3,4,5,6]
函数应该说它是顺序的,即每个元素比前一个元素大一个。 提前致谢。
>>> a=[1,2,3,4,5,6]
>>> all(i==j for i,j in enumerate(a, a[0]))
True
>>> a=[1,3,4,5,8,10]
>>>
>>> all(i==j for i,j in enumerate(a, a[0]))
False
一种简单的测试方法是
if all(x[i] == x[0]+i for i in range(1, len(x))):
...
你可以使用zip
和set
:
def check_sequential(a):
return set([p - q for p, q in zip(a[1:], a)]) == {1}
print check_sequential([1,3,4,5,8,10])
print check_sequential([1,2,3,4,5])
输出:
False
True
使用numpy。
区分它
使用最大。
对于简短列表,您可以自己创建一个顺序范围并进行比较
>>> a = [1,2,3,4,5,6]
>>> a == range(a[0], a[-1] + 1) # in Python3, you need list(range(...))
True
>>> a = [1,3,4,5,8,10]
>>> a == range(a[0], a[-1] + 1)
False
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.