我正在编写一个函数,该函数接受一个整数列表并返回一个相对定位元素的列表。
也就是说,如果我将 [1, 5, 4] 输入到该函数中,则输出将为 [0, 2, 1],因为1是最小元素,5是最高元素,4在中间,所有元素都是唯一值,或者说是一个set()。
但是,代码才是王道,我目前拥有的函数是:
也就是说,如果我将 [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
这个函数是可以工作的,但由于我将大量列表发送到该函数中,并且在每次迭代中必须将每个元素与所有元素进行比较,因此在包含10,000个元素的列表中需要约5秒钟。
我的问题是如何提高该函数的速度,或许更加符合Pythonic的方式,我尝试使用了推导式列表,但我的Python技能不足,只想出了一种命令式的实现方法。