如果我有一个说l = [1, 8, 8, 8, 1, 3, 3, 8]的列表,并且可以确保每个元素出现偶数次,那么我如何制作一个列表,其中l的所有元素现在都出现n/2次。因此,由于1发生了2次,因此现在应该发生一次。由于8出现4次,因此现在应该出现两次。由于3发生两次,因此应该发生一次。
因此,新列表将类似于k=[1,8,8,3]最快的方法是什么?
我为每个元素都做了list.count(),但是速度很慢。

最佳答案

如果顺序不重要,则一种方法是仅在排序后才获得奇数或偶数索引。这些列表将相同,因此您只需要其中之一。

l = [1,8,8,8,1,3,3,8]
l.sort()

# Get all odd indexes
odd = l[1::2]

# Get all even indexes
even = l[::2]

print(odd)
print(odd == even)
结果:
[1, 3, 8, 8]
True

关于python - 删除列表中一半重复项的有效方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62793544/

10-11 10:18
查看更多