比较两个python列表,最多n-2个元素:
list1 = [1,2,3,'a','b']
list2 = [1,2,3,'c','d']
list1 == list2 => True
排除2个列表的最后2个元素,它们是相同的。
我可以通过比较2个列表中的每个元素来实现。但还有其他有效的方法吗?
答案 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