遇到了就刨根问题,补补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