Python中列表去重的方法和sort中key的含义

列表去重这样是在面试中经常会问到的题目。下面先讲最直观的,也算比较简单的方法

第一种:直观方法

mylist=[5,6,4,1,'h','a','f','a',2,4,2,1]
mylist2=[]
for i in mylist:   #循环遍历列表
    if i not in mylist2: #判断 遍历到的数据是否在列表2中
        mylist2.append(i)   #如果不存在添加到新的列表2中
print(mylist2)

这是python中最基础也是最直观的方法,很容易理解。

第二种:利用set去重

首先要理解set是什么,set是集合,这里利用了集合不重复的特点


mylist=[5,6,4,1,'h','a','f','a',2,4,2,1]
li =list(set(mylist))  #先转换成集合,自动去重,在转换成列表
print(li)

虽然很简单就可是实现去重的的效果,但是结果和我们想象的不一样,因为集合是无序的,会打乱原先列表的顺序,当然这是有解决办法的,我们只需要加一行代码就可以了,下面是完整版:

mylist=[5,6,4,1,'h','a','f','a',2,4,2,1]
li =list(set(mylist))
li.sort(key=mylist.index)
print(li)

这里面就涉及到了sort()的两个可选参数,key和reverse,我们主要讲一下key的用法。key=mylist.index表示按照mylist列表中的数值对应的下标进行排序,也就是按照原先的顺序排序,而reverse是后面跟false或者ture代表升序和降序,默认是升序。

还有一种比较复杂比较难理解的一种:

mylist=[5,5,6,4,1,'h','a','f','a',2,4,2,1]
mylist2=[]
i =0
while i
这种通过判断查找一个数的第一出现的坐标与i是否相等,如果相等存入到新列表中,如果不相等则跳过,这个比较复杂,了解一下就好,这个类似JavaScript中的数组去重。




你可能感兴趣的:(python)