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