所以我有一个问题,我需要删除列表中出现n次以上的整数。这给了我一个错误,删除列表中不存在(x)。救命啊!
def answer1(data, n):
for i in range(len(data)):
item = 0
if data.count(i) > n:
item = i
for k in range(len(data)):
data.remove(item)
print(data)
data = [1, 2, 3, 1, 1, 2, 2, 3, 4 ,5]
answer1(data, 2)
答案 0 :(得分:2)
您的代码无效,因为您是removing items from your list while iterating on it。这缩短了列表,但迭代它的循环不知道(因为它的内部索引计数器)
我会使用collections.Counter
来计算事件(良好的性能,而不是在每次迭代时扫描列表的count
)然后使用列表理解过滤列表(作为奖励,原始输入未被修改)
import collections
def answer1(data, n):
c = collections.Counter(data)
return [x for x in data if c[x]<n]
data = [1, 2, 3, 1, 1, 2, 2, 3, 4 ,5]
a = answer1(data, 2)
print(a)
结果:
[4, 5]
(并保留初始订单)