pla*_*etp 2 python equality list python-3.x
我需要检查Python列表是否包含两个相等的一半.例如,此列表可以:
[6, 2, 0, 2, 3, 2, 6, 2, 0, 2, 3, 2]
Run Code Online (Sandbox Code Playgroud)
而这不是
[6, 2, 0, 2, 4, 6]
Run Code Online (Sandbox Code Playgroud)
我试过这个检查: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))
Run Code Online (Sandbox Code Playgroud)
如果您还要检查列表的长度是否均匀,您还可以添加
len(lst)%2==0
Run Code Online (Sandbox Code Playgroud)
作为一个条件.