如何有效地检查列表的前半部分是否等于另一半?
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
作为条件。
我需要检查 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
作为条件。