去重可以亂序
lis =[3
,1,4
,3,6
,3,2
,4,9
,1]lis2 =
list
(set
(lis)
)print
(lis2)
去重不改變原始順序
本質上 func1、func3 和 func6原理是一樣的,將列表遍歷一次,第一次出現到放到新到列表中
func2、func4 和 func5原理是一樣的,先將列表去重,然後按原始列表的索引重新排序
from functools import
reduce
deffunc1()
: list_duplicate =[3
,1,4
,3,6
,3,2
,4,9
,1] list_non_duplicate =
for i in list_duplicate:
if i not
in list_non_duplicate:
print
(list_non_duplicate)
deffunc2()
: list_duplicate =[3
,1,4
,3,6
,3,2
,4,9
,1] list_non_duplicate =
list
(set
(list_duplicate)
) list_non_duplicate.sort(key=list_duplicate.index)
print
(list_non_duplicate)
deffunc3()
: list_duplicate =[3
,1,4
,3,6
,3,2
,4,9
,1] list_non_duplicate =
for i, v in
enumerate
(list_duplicate)
:if list_duplicate.index(v)
== i:
# todo 值v是第一次出現,新增到新列表中
print
(list_non_duplicate)
deffunc4()
: list_duplicate =[3
,1,4
,3,6
,3,2
,4,9
,1] list_non_duplicate = list_duplicate[:]
for i in list_duplicate:
while list_non_duplicate.count(i)
>1:
# todo list_non_duplicate 去重
del list_non_duplicate[list_non_duplicate.index(i)
] list_non_duplicate.sort(key=list_duplicate.index)
print
(list_non_duplicate)
deffunc5()
: list_duplicate =[3
,1,4
,3,6
,3,2
,4,9
,1] list_non_duplicate =
sorted
(set
(list_duplicate)
, key=list_duplicate.index)
print
(list_non_duplicate)
deffunc6()
: list_duplicate =[3
,1,4
,3,6
,3,2
,4,9
,1] func =
lambda list_n_d, i: list_n_d if i in list_n_d else list_n_d +
[i] list_non_duplicate =
reduce
(func,[[
]]+ list_duplicate)
print
(list_non_duplicate)
if __name__ ==
'__main__'
: func1(
) func2(
) func3(
) func4(
) func5(
) func6(
)
json序列化不改變順序
fastjson對json字串進行序列化,序列化之後發現順序發生了改變,導致之後業務出現問題。解決方法 linkedhashmapjson json.parseobject message,linkedhashmap.class,feature.orderedfield jsonobject jso...
不改變相對順序,負數左邊正數右邊
不改變正負數之間的相對順序重新排列陣列,使得負數字於正數之前 1 舉例 如 1,7,5,2,9,3變成 5,9,1,7,2,3 2 方法一 從頭到尾掃瞄陣列,每次碰到乙個正數時,就把位於這個數字之後的所有數字到往前挪動一位。挪動之後在陣列的末尾有乙個空位,把這個正數填進去。整體的時間複雜度為o n ...
長列表效能優化(只展示資料 不改變資料)
我們應該都知道 vue 會通過 object.defineproperty 對資料進行劫持,來實現檢視響應資料的變化,然而有些時候我們的元件就是純粹的資料展示,不會有任何改變,我們就不需要 vue 來劫持我們的資料,在大量資料展示的情況下,這能夠很明顯的減少元件初始化的時間。所以,我們可以通過 ob...