2016-03-15 20 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 
相关问题