两个清单比较简洁?

时间:2013-08-28 21:15:54

标签: python list compare

我想知道在python中是否有一种通用的方法来比较元素两个列表(例如,列表1中的元素大于列表2中的元素)比这更简洁:

    t1 = [1,1,0]
    t2 = [2,2,1]
    for I in range(len(t1)):
        if t1[I] > t2[I]:
            return False

提前致谢!

2 个答案:

答案 0 :(得分:5)

使用any()all()分别测试一个条件是否适用于列表中的任何元素或所有元素,再加上zip将这两个列表粘在一起。例如,问题中的代码可以更简洁地实现,如下所示:

not any(x > y for x, y in zip(t1, t2))
=> True

或等同地,正如@squiguy在评论中所指出的那样:

all(x <= y for x, y in zip(t1, t2))
=> True

答案 1 :(得分:2)

列表(和一般的序列)按照字典顺序(逐个元素)进行比较,完全按照您的意愿。所以,你的循环相当于:

return not t1 > t2

当然,如果两个列表的长度不同,则会有不同的处理方式(例如,在某些情况下,您的代码会返回IndexError,而另一个会返回False)。但实际上,你必须定义在这些情况下你想要发生什么,然后实际编码测试很容易 - 除了一半的时间,你想要的正是默认列表比较已经完成的。 / p>