我正在编写一个函数,它接收一个整数列表并返回一个相对定位元素的列表。
也就是说,如果我对所述函数的输入是[1, 5, 4]输出将是[0, 2, 1],因为 1 是最低元素,5 是最高元素,4 在中间,所有元素是唯一值,或set()
但是代码会说话,我到目前为止的功能是
def relative_order(a):
rel=[]
for i in a:
loc = 0
for v in a:
if i > v:
loc += 1
rel.append(loc)
return rel
它确实有效,但是由于我将大列表发送到此函数中,并且我必须将每个元素与每次迭代中的所有元素进行比较,因此需要约 5 秒的时间来处理包含 10.000 个元素的列表。
我的问题是如何提高所述功能的速度,并且可能更加 Pythonic,我尝试了理解列表,但我的 Python 技能缺乏,我只想出了实现这个问题的命令式方法。