python中如何對列表中元素排序且返回的是每個列表元素的序數?

時間 2021-05-30 10:59:51

1樓:coder

import

copyl1=

[1,4

,7,2

,9]l2

=copy

.deepcopy(l1

)# 深拷貝l1

result

=list

()# 用來存放結果d=

dict

()# 借助了python中的dict資料結構l1.

sort

()# 對l1進行了排序, 會改變l1中值的順序, 不過我們已經拷貝了l1

forindex

,value

inenumerate(l1

):d[value]=

index

# foriin

l2:result.(

d[i])

print

(result

)# 輸出結果 [0, 2, 3, 1, 4]

2樓:牛津小馬哥

手機打的答案,我盡量簡要回答下

首先你先用了 np.argsort,然後再用乙個for 迴圈,並且,我估計你在for迴圈中還不停呼叫了python中的list.index(x)這個方法,那麼你的整個程式的時間複雜度應該是O(n^2)

額外說明下:表面看上去是O(n)...但是題主應該有不停呼叫index這個方法,所以是n^2

那麼下面這個應該時間複雜度是O(kn),可以考慮作為乙個更好的方法,你可以嘗試下。我這裡寫乙個抽象點的函式方法,手機打。。請見諒

input: _list = [1,4,7,2,9]

方法1:

先把 _list 迴圈一次,讓裡面全部變成帶index的tuple,[(1,0), (4,1), (7, 2), (2, 3), (9, 4)],時間複雜度應該是 O(n)

然後再寫乙個sort(我相信不用給你普及一大堆sort的演算法的了),時間複雜度應該也應該在O(n)

然後最後再迴圈一次,把tuple中的index抽出來,時間複雜度是O(n)

最後是 3O(n) => O(n)

方法2:

直接迴圈一次,但是是 for k in range(len(_list))進行迴圈,然後直接使用常用的sorting演算法

迴圈中應該要有兩個儲存變數 _result1, _result2,

_result1將會插入實際數值 _list[k]

_result2將會跟_result1插入同位,但是插入的是 k (也就是index)

時間複雜度應該就是O(n)

希望我上面的文字能給到你一些啟發性的幫助。

Python 如何對列表中的全部元素分別進行賦值?

navegador b0,b1,b2 a 0 3 或者,全域性情況 arr list range 100 for i in range 100 globals b str i arr i py 裡所有變數都可以找到容納它的字典,比如Class 是 dict 全域性是globals 等等 宋小莫 a ...

Python如何判斷列表元素嚴格遞增?

Beviniy 提供一種效率更高的方案 all a i a i 1 for i in range len a 1 原答案sorted a a and len set a len a defjudge alist if any alist i 1 alist i foriin range 0 len ...

python列表如何依次取2個元素?

邢軒 demo lst 1,2,3,4,5 def to sublists lst,length 2 return lst i i length for i in range len lst 1 length print to sublists demo lst letters a b c d e ...