比较2个列表

时间:2016-06-26 04:53:25

标签: python python-2.7

我没有这方面的代码,因为我不知道该怎么做,也无法在Google上找到很多帮助。

有没有办法找到2个列表上的相同索引是否相同?

例如:

x_list = [1, 2, 3, 4, 5]
y_list = [1, 2, A, B, 5]

我想知道X的第一个索引是否与Y的第一个索引相同,X的第二个索引与Y的第二个索引相同,等等。我可以这样做:

x_list[0] == y_list[0]

但需要一个无限的解决方案。

5 个答案:

答案 0 :(得分:10)

zip列表并返回测试(返回布尔值作为结果):

[i == j for i, j in zip(x_list, y_list)]

如果您不需要值,可以使用any快速检查是否存在False(表示项目不相同):

any(i != j for i, j in zip(x_list, y_list))

any版本会在找到False时中断,这意味着您可能不必遍历整个列表,除非在最坏的情况下。

答案 1 :(得分:3)

您始终可以使用列表推导:

[True if i == j else False for i,j in zip(x_list, y_list)]。 您还可以查看Moses Koledoye不太明确的答案,其中True if i == j else False是juzt i == j

zip功能会将您的列表组合起来,如[(1,1),(2,2),(3,' A'),(4,' B'),( 5,5)]

结果:[True, True, False, False, True]

如果你使用Python2,还建议使用itertools中的izip。

答案 2 :(得分:1)

试试这个:

/* CSS DOCUMENT */
body {
    background-color: #fff;
    color: #0094ff;
    font-family: 'Segoe UI Light', 'Tahoma', Geneva, Verdana, sans-serif;
    font-size: 24px;
    font-weight: 100;
    text-decoration: none; 
}

ul.NavList {
    list-style-type: none;
    text-decoration: none;
    text-align: center;
    padding: 20px 20px 0 0;
}

ul.NavList li {
    display: inline;
    text-decoration: none;
}

答案 3 :(得分:1)

如果您想要比较不同大小的列表,可以尝试使用以下定义。这将获取或不获取唯一索引元素,而不是True或False列表。

def is_uniq_lists(x_list, y_list):
    if len(x_list) != len(y_list):
        return False

    for (i,j) in zip(x_list, y_list): 
        if i != j: return False 

    return True

结果:

>>> a = [1,2,3,4,5]    # Unique lists
>>> b = [1,2,3,4,5]
>>> List.is_uniq_lists(a,b)
True
>>> a=[1,2,3,4,5]    # Different lists
>>> b=[1,2,'A','B',5]
>>> List.is_uniq_lists(a,b)
False
>>> a=[1,2,3,4,5]
>>> b=[1,2,3,4,5,6]    # Lists of unequal length
>>> List.is_uniq_lists(a,b)
False

答案 4 :(得分:0)

def compareArrayIndex(L1, L2):
    if(len(L1) == len(L2)):
        for i in range(0, len(L2)):
            if(L1[i] > L2[i]):
                # logic
            elif(L1[i] < L2[i]):
                # logic
            else:
                # logic
        return value