如何有效地检查列表的前半部分是否等于另一半?

How to check if the first half of a list is equal to the other efficiently?

我需要检查 Python 列表是否由相等的两半组成。例如,此列表执行:

[6, 2, 0, 2, 3, 2, 6, 2, 0, 2, 3, 2]

而这不是

[6, 2, 0, 2, 4, 6]

我试过这个检查:len(lst) % 2 == 0 and lst[:len(lst)//2] == lst[len(lst)//2:]但是对于更大的列表来说它似乎太慢了。还有其他解决方案吗?

可以在不创建两个子列表的情况下进行检查。对于非常大的列表,它可能会更快。

n = len(lst)//2
all(lst[i]==lst[i+n] for i in range(n))

如果您还想检查列表的长度是否均匀,您还可以添加

len(lst)%2==0

作为条件。