比较Python列表

时间:2010-10-05 20:03:39

标签: python list

我在python中有几个长列表并比较它们并找到彼此相等的列表,除了它们中的最后一个元素。 哪种方法最快?

4 个答案:

答案 0 :(得分:14)

a[:-1]是“a的所有元素的缩写,但是最后一个元素。”如果您需要排除多于1个元素,请将1更改为您需要的数字。

a[:-1] == b[:-1]会将ab与最终元素进行比较。

有关切片的详细信息,请参阅this

答案 1 :(得分:8)

使用类似if list1[:-1] == list2[:-1]的内容。

答案 2 :(得分: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个元素的校验和,然后只比较校验和。

答案 3 :(得分:0)

# choose n to be whatever "last few elements" you want
n = 5
if list1[:-n] == list2[:-n]:
    print("The lists are the same")

使用变量n可以排除任意数量的最后一个"元素"从列表中。