如果我有一个说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/