python - 我将如何修复此功能?
问题描述
嘿,这是我的第一个问题,所以我希望我做对了。
我正在尝试编写一个函数,它给出一个整数列表和 N 作为最大出现次数,然后返回一个列表,其中删除了最大出现次数之上的任何整数。例如,如果我输入:
[20,37,20,21] #list of integers
和1 #maximum occurrence
. 然后作为输出我会得到:
[20,37,21]
因为数字 20 出现了两次,并且最大出现次数是 1,所以它被从列表中删除。这是另一个例子:
Input: [1,1,3,3,7,2,2,2,2], 3
Output: [1,1,3,3,7,2,2,2]
这是我到目前为止写的内容,我将如何优化它?我不断收到超时错误。非常感谢您提前。
def delete_nth(order,n):
order = Counter(order)
for i in order:
if order[i] > n:
while order[i] > n:
order[i] - 1
return order
print(delete_nth([20,37,20,21], 1))
解决方案
您可以在开始时删除构建Counter
- 只需将临时字典作为计数器:
def delete_nth(order,n):
out, counter = [], {}
for v in order:
counter.setdefault(v, 0)
if counter[v] < n:
out.append(v)
counter[v] += 1
return out
print(delete_nth([20,37,20,21], 1))
印刷:
[20, 37, 21]
推荐阅读
- go - Proto3 for Go 中的可选支持
- javascript - 如何在 React 中动态调整不同行列的大小以使其相同
- c# - 从白色测试堆栈打开 Windows 事件查看器
- chatbot - “rasa shell”未按预期启动聊天会话
- java - 根据类型层次结构创建映射函数
- python - 从数据框的最后一行计算数据框列中值的出现次数
- laravel - 检查同一用户是否再次连接到同一频道 laravel websockets
- android - Android - 从一个应用模块启动其他应用模块
- google-apps-script - onEdit(e) 触发器在编辑单元格时不执行任何操作
- r - “'dimnames'[1] 的长度不等于数组范围”kmeans 聚类