我在python中有几个很长的列表,并对它们进行了比较,找到了除了最后一个元素之外彼此相等的列表。哪种方法最快?
发布于 2010-10-06 04:06:58
使用像if list1[:-1] == list2[:-1]这样的东西。
发布于 2010-10-06 04:06:36
a[:-1]是“a中除最后一个元素以外的所有元素”的缩写。如果需要排除多个元素,请将1更改为所需的数字。
a[:-1] == b[:-1]将比较a和b,但不包括它们的最后一个元素。
有关切片的详细信息,请参阅this。
发布于 2010-10-06 04:16:14
为了比较两个列表,我认为这样可以避免复制列表的任何部分,并在发现不匹配时立即停止:
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个元素的校验和,然后只比较校验和。
https://stackoverflow.com/questions/3867262
复制相似问题