如何检查列表中的两个连续数字(整数)是否具有相同的值?

时间:2015-10-14 04:55:09

标签: python list

我有一个数字列表(列表的长度存储在一个单独的变量中),需要检查是否有任何连续的整数相同,然后打印一条消息。我该怎么做?

4 个答案:

答案 0 :(得分:1)

试试这个:使用itertools.groupby

>>> import itertools
>>> your_list = [4, 5, 5, 6]
>>> for x, y in itertools.groupby(your_list):
...     if len(list(y))>=2:
...         print x, "they are consecutive"
... 
5 they are consecutive

答案 1 :(得分:1)

Python有一个名为pairwise的秘诀,您可能会感兴趣:

from itertools import tee, izip

def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return izip(a, b)

number_list = [1, 2, 2, 3, 4, 4, 5, 5, 5]
print [a for a, b in pairwise(number_list) if a == b]

这将显示具有以下对的数字列表:

[2, 4, 5, 5]

答案 2 :(得分:0)

通过zip轻松执行ping操作,并将自身副本偏移一个元素:

list1 = [1, 2, 3, 4, 4, 5, 6, 7, 8, 9]
for x, y in zip(list1, list1[1:]):
    if x == y:
        print x

以上代码将打印4

或者如果您还想要索引:

list1 = [1, 2, 3, 4, 4, 5, 6, 7, 8, 9]
for index, pair in enumerate(zip(list1, list1[1:])):
    if pair[0] == pair[1]:
        print 'index:', index, 'value:', pair[0]

这将输出index: 3 value: 4

答案 3 :(得分:0)

真的不是最优化的方式,但总是很有趣:

True in [a==b for a,b in zip(l[:-1],l[1:])]

当然:

if True in [a==b for a,b in zip(l[:-1],l[1:])]:
    print("message")