python - 通过删除 "middlest"项从数组中删除条目的算法?

标签 python arrays algorithm

给定一个长度为 n 的项目列表,其中所需元素的最大数量为 m , 和 m < n ,其中列表中最有值(value)/最有用的项目是那些距离任何其他项目最远的项目。如何从列表中删除项目以将列表的大小减小到 m .

  • 例如,[ a, b, c, d, e ]m == 2 ,我们会得到 [ a, e]

  • 例如,[ a, b, c, d, e ]m == 3 ,我们会得到 [ a, c, e ]

  • 例如,[ a, b, c, d, e ]m == 4 ,我们会得到 [ a, b, c, e ][ a, c, d, e ] . (任何一个答案都是有效的;但只应返回一个,最好是确定性地返回。)

注意:我概括了一个真实的问题,即从视频中选择具有代表性的帧。代码将用 python 编写。

最佳答案

以大约 (n-1)/(m-1) 的步长遍历列表,其中“about”是因为我们不能落在非整数上。

def representatives(l, m):
    num, den = len(l)-1, m-1
    return [l[i * num // den] for i in range(m)]

这里,结果的元素i取自输入的元素i*(n-1)//(m-1),其中// 是楼层划分。

关于python - 通过删除 "middlest"项从数组中删除条目的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51528690/

相关文章:

python - 如何从末尾开始读取python文件中的行

jquery - 如何为 jQuery 对象分配属性?

C - 使用指向字符数组的指针打印网格

algorithm - 给定两个数组,找到给出两个数组之间最近距离的排列

递归中的 Javascript 'this' 上下文?

java - 有 3 个容器(2 个满的和 1 个空的)并尝试从中创建 x 数量

python 缩进失败?

python - 如何获得工作结果 disco python

python - 如何在 Python 中跳过前几行 Excel 工作表

iphone - 数组,找到有值的对象并获取其indexPath