2015-10-14 130 views
-1

我有一個數字列表(列表的長度存儲在一個單獨的變量),並需要檢查是否有任何連續的整數是相同的,然後打印一條消息,如果他們是。我將如何做到這一點?如何檢查列表中的兩個連續數字(整數)是否具有相同的值?

+1

保存的第一個值的變量,然後在列表中循環檢查當前值和變量值,然後將該變量設置爲當前值。只要當前值等於變量就打印出來。嘗試用這個邏輯編寫一些代碼,然後在代碼中詢問一個有問題的問題。 – dstudeba

回答

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 
0

容易通過zip平與一個元素抵消其自身的副本做名單:

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

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") 
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] 
相關問題