比较2个python列表,最多n-2个元素

时间:2017-08-23 09:37:13

标签: python python-3.5

比较两个python列表,最多n-2个元素:

 list1 = [1,2,3,'a','b']
 list2 = [1,2,3,'c','d']

 list1 == list2 => True

排除2个列表的最后2个元素,它们是相同的。

我可以通过比较2个列表中的每个元素来实现。但还有其他有效的方法吗?

4 个答案:

答案 0 :(得分:4)

这样:

 list1 = [1,2,3,'a','b']
 list2 = [1,2,3,'c','d']

 list1[:-2] == list2[:-2] => True

答案 1 :(得分:2)

在第一对(a,b)之后返回false,其中a!= b

def compare(list1,list2):
    for a,b in zip(list1[:-2],list2[:-2]):
        if a != b : 
            return False
    return True

答案 2 :(得分:1)

如果您的列表非常大并且您希望避免使用list1[:-2]==list2[:-2]复制它们,则可以使用生成器表达式来获得更节省内存的解决方案:

all(a==b for a,b,_ in zip(list1, list2, range(len(list1)-2)))

答案 3 :(得分:0)

直接切片列表......

Python具有切片列表的语法,如下所示:

lst[start:stop:step]

这是一个简洁的功能,您可以使用负值将列表切片到最后指定的位置。所以,如果你有一个列表susch为:

lst = [1,2,3,4,5]

您可以使用以下方式对其进行切片:

lst[:-3]

从最后得到第三个值:

[1,2,3]

所以这可以用来比较你的两个列表:

list1 = [1,2,3,'a','b']
list2 = [1,2,3,'c','d']

list1[:-2] == list2[:-2] => True