遇到了就刨根問題,補補python基礎吧。
數據會清理,特徵會派生,模型會跑,參數能調,但始終還是有漏洞,或者術語不可名狀。
python 去重,並保持列表原來順序
list_a = ['cc', 'bbb', 'dda','bbbb', 'cc', 'sss', 'fase']
list_new = list(set(list_a))
list_new.sort(key = list_a.index)
>>> list_a = ['cc', 'bbb', 'dda','bbbb', 'cc', 'sss', 'fase']
>>> list_new = list(set(list_a))
>>> list_new
['cc', 'dda', 'bbbb', 'sss', 'bbb', 'fase']
>>> list_new.sort(key = list_a.index)
>>> list_new
['cc', 'bbb', 'dda', 'bbbb', 'sss', 'fase']
key的作用是指定待排序list(此處即list_a)中的元素中用來作爲排序依據的屬性
sort還有其他的參數:(取自百度問答)
li.sort(cmp=None, key=None, reverse=False)
uMinNum = li[0]
li.sort(cmp=None, key=None, reverse=True)
uMaxNum = li[0]
-----------------------------------------
li是一個列表,用列表存儲這些數據, 然後用列表的排序方法sort()。
li.sort(cmp=None, key=None, reverse=False)也可以寫成li.sort(), 因爲sort()函數的原形就是這樣。默認的爲是升序排序。
li.sort(cmp=None, key=None, reverse=True)修改sort()的reverse變量, 讓sort()進行降序排序。
li[0] 是取排好序後的第一個元素
>>> c.sort(key=lambda x:x[0]) #依照列表第0個元素進行排序
>>> c
[(0, 9), (1,8), (2, 7), (3, 6), (4, 5), (5, 4), (6, 3), (7, 2), (8, 1), (9, 0)]
>>> c.sort(key=lambda x:x[1])
>>> c
[(9, 0), (8, 1), (7, 2), (6, 3), (5, 4), (4, 5), (3, 6), (2, 7), (1,8), (0, 9)]
上例中的key爲匿名方法,分別以c[i][0], 和 c[i][1] 作爲排序依據,所以有這個結果。cmp的作用是指定比較的標準,如升序,逆序等等
爲什麼x.sort()
是None
>>> list_new
['cc', 'bbb', 'dda', 'bbbb', 'sss', 'fase']
>>> one =list_new.sort(key = list_a.index)
>>> print(one)
None
這裏會返回None的原因 可參考x.sort() == sorted(y) 爲什麼是False,原因是
|
sort是列表的一個方法,該方法直接修改原x列表,返回None。
所以,比較的對象應該是sort後的 x 與 sorted(y)。
|
這樣就返回True了。a.sort是對a進行排序,返回None,sorted(a)返回一個排好序的副本,a不變。
同理,可反觀我師弟孫凱提到的問題
python中sort和sorted的問題
這兩種方法的可參考上面爲什麼x.sort()
是None