2016-08-25 52 views
3

我需要检查两个列表是否有任何相同的元素,但这些相同的元素也必须在相同的索引位置。如何检查列表元素是否在另一个列表中,但也在同一索引

我想出了一个下丑陋的解决方案:

def check_any_at_same_index(list_input_1, list_input_2): 
    # set bool value 
    check_if_any = 0 
    for index, element in enumerate(list_input_1): 
     # check if any elements are the same and also at the same index position 
     if element == list_input_2[index]: 
      check_if_any = 1 
    return check_if_any 

if __name__ == "__main__": 
    list_1 = [1, 2, 4] 
    list_2 = [2, 4, 1] 
    list_3 = [1, 3, 5] 

    # no same elements at same index 
    print check_any_at_same_index(list_1, list_2) 
    # has same element 0 
    print check_any_at_same_index(list_1, list_3) 

必须有一个更好更快的方式做到这一点,有什么建议?

回答

5

如果您想检查相同索引中是否有相同的项目,可以使用zip()函数和any()中的生成器表达式。

any(i == j for i, j in zip(list_input_1, list_input_2)) 

如果您想返回该项目(第一次出现),可以使用next()

next((i for i, j in zip(list_input_1, list_input_2) if i == j), None) 

如果要检查所有你可以用一个简单的比较:

list_input_1 == list_input_2 
+1

我认为OP想要“全部”。 – DeepSpace

+1

是的......如果结果有[True,False,False] any给出True ...应该是全部 –

+0

任何正是我想要的,谢谢! –

相关问题