比较两个类似列表对象的内容的最佳方法是什么?

Eri*_*rik 6 python polymorphism idioms

当我必须比较两个类似数组的对象的内容 - 例如lists,tuples或collection.deques - 而不考虑对象的类型时,我使用

list(an_arrayish) == list(another_arrayish)
Run Code Online (Sandbox Code Playgroud)

有没有更惯用/更快/更好的方法来实现这一目标?

JBe*_*rdo 4

按元素比较:

def compare(a,b):
    if len(a) != len(b):
        return False
    return all(i == j for i,j in itertools.izip(a,b))
Run Code Online (Sandbox Code Playgroud)

对于 Python 3.x,请zip改用

  • 使用上面的基准,这给出了大约 9-10 秒的时间。 (2认同)
  • @minitech 这是预期的,因为 Python 循环显然比 C 循环慢得多。但它永远不会耗尽你的内存,因为它不需要像元组/列表方法那样将存储加倍。另外,对于不同大小的列表(或第一项不同的列表)会更好 (2认同)