比较Python列表

9 投票
4 回答
18154 浏览
提问于 2025-04-16 05:02

我在Python中有几个很长的列表,我想比较这些列表,找出那些除了最后一个元素外其他元素都相等的列表。请问有什么最快的方法吗?

4 个回答

1

要比较两个列表,我觉得可以用这样的方式,这样可以避免复制列表中的任何部分,并且一旦发现不匹配就会停止:

len(a)==len(b) and all(a[i] == b[i] for i in range(len(a)-1))

如果你想在一组任意的列表中找到所有匹配项,我觉得你需要比较每一对列表——或者至少是那些你还没有检查过的等价版本的列表(例如,如果A=B且B=C,那么你就不需要再检查A=C了)。我目前不知道有什么简单的算法可以做到这一点。

另外,如果列表非常长,而你又想避免遍历它们,你可以考虑计算每个列表前N-1个元素的校验和,然后只比较这些校验和。

14

a[:-1] 是一种简写方式,意思是“取出 a 中的所有元素,但不包括最后一个。”如果你想排除多个元素,只需把1改成你需要排除的数量。

a[:-1] == b[:-1] 这个表达式会比较 ab,但不包括它们的最后一个元素。

想了解更多关于切片的内容,可以查看 这个链接

8

可以用类似 if list1[:-1] == list2[:-1] 这样的写法。

撰写回答