2016-03-15 21 views
0

我的問題與典型的不同。假設我們有,如何檢查列表是否在另一個列表中使用相同的順序python

X = ['123', '456', '789'] 

而且,我們想找到另一個列表是否與以相同的順序X。例如,

A = ['123', '456'] 
# should return True since A in X with same order 
B = ['456', '123'] 
# should return False since elements in B are not in same order with X 
C = ['123', '789'] 
# should return False since elements in C are not adjacent in X 

任何人都可以給我任何想法嗎?

回答

1

的Python 2:

def is_a_in_x(A, X): 
    for i in xrange(len(X) - len(A) + 1): 
    if A == X[i:i+len(A)]: return True 
    return False 

的Python 3:

def is_a_in_x(A, X): 
    for i in range(len(X) - len(A) + 1): 
    if A == X[i:i+len(A)]: return True 
    return False 
+1

非常感謝。它完美的工作! –

-1

一個可能的解決辦法,如果你的號碼總是三位數:

x = ['123', '456', '789'] 

A = ['123', '456'] 
''.join(A) in ''.join(x) 

B = ['456', '123'] 
''.join(B) in ''.join(x) 

C = ['123', '789'] 
''.join(C) in ''.join(x) 

雖然,容易出現的錯誤,例如:

D = ['1', '23'] 
''.join(D) in ''.join(x) 


outputs True 
0
def foo(your_list, your_main_list): 
    list_len = len(your_list) 
    for i, item in enumerate(your_list): 
     if your_main_list[i] == item: 
      if i + 1 == list_len: 
       return True 
     else: 
      return False 
相關問題