首页 > 解决方案 > 查找列表中大于当前元素的所有元素

问题描述

如果我在 Python 中有一个数组,其中所有元素都有不同的值,例如[1,4,6,2,10,3,5],有没有办法找到列表中大于当前索引的值的总数?

因此,例如,使用上面长度为 7 的列表,我想得到的结果是另一个长度为 7 的列表,它看起来像[6,3,1,5,0,4,2]. 我在尝试遍历列表时遇到了麻烦(我尝试使用的代码如下)

for i in data:
    count = np.sum(data > data[i])
    N[i]=count

其中data是包含所有相关值的数组,并且Nnp.zeros与数据长度相同的列表

标签: pythonlistnumpyloopsindexing

解决方案


这是我的建议:

我们对原始列表 (l) 进行排序,并将其保存在新列表 m 中。我们创建一个新列表 (k),在其中保存在 m 中每个元素的位置右侧找到的元素的计数。见下文:

l=[1,4,6,2,10,3,5]

m=sorted(l)
#[1, 2, 3, 4, 5, 6, 10]

k=[]
for i in l:
    k.append(len(m)-m.index(i)-1)

>>> print(k)

[6, 3, 1, 5, 0, 4, 2]

推荐阅读