Python对二维列表list去重并排序 原创 阁主 2022-07-12 07:15:05 阅读 2546 次 评论 0 条 摘要:简简单单的示例,做个笔记,一起加油学习! 一维列表去重 ------ 对于一维列表去重是最简单的方法,就是使用list列表自带的set方法。 ``` list1 = [1, 2, 3, 4, 5, 6, 6, 6, 7, 8, 8, 8, 8, 9, 10] print(list1) list1 = list(set(list1)) print(list1) ``` ![一维数组去重.png](https://www.mainblog.cn/zb_users/upload/2022/07/202207120741165789033.png "一维数组去重.png") 当然接下去就是二维列表去重,可以先使用上面方法测试一下,发现是行不通的。对于二维列表直接使用set会报错TypeError: unhashable type: "list"。 ![二维数组去重报错.png](https://www.mainblog.cn/zb_users/upload/2022/07/202207120744273863213.png "二维数组去重报错.png") 二维列表去重 ------ 二维列表去重正确打开方式,我总结了两个比较好用的方法,一起分享记录。 第一种代码示例如下,先转化成tuple然后在进行set。 ``` list1 = [ [1, 2, 3], [4, 5, 6], [1, 2, 3], [7, 8, 9] ] print(list1) res = list(set([tuple(t) for t in list1])) res = [list(s) for s in res] print(res) ``` ![二维列表去重.png](https://www.mainblog.cn/zb_users/upload/2022/07/202207120751009750180.png "二维列表去重.png") 第二种方法就是利用for循环依次判断是否存在新的list2变量中,并追加转移到新的list2变量中。用这个方法的好处就是不会改变list列表原有的顺序。 ``` list1 = [ [1, 2, 3], [4, 5, 6], [1, 2, 3], [7, 8, 9] ] print(list1) list2 = [] for v in list1: if v not in list2: list2.append(v) print(list2) ``` ![二维自定义for去重.png](https://www.mainblog.cn/zb_users/upload/2022/07/202207120758078830820.png "二维自定义for去重.png") 至于更多的多维列表,推荐大家根据我上面第二种方法去修改实现即可。 一维列表排序 ------ 因为使用set方法去重后,原有的顺序会更改,下面代码给出去重后的一维列表的从小到大排序代码示例。 ``` list1 = [31, 8, 63, 4, 33, 6, 6, 6, 7, 8, 8, 8, 8, 9, 10] list1 = list(set(list1)) # 去重 print(list1) # 原有顺序会打乱 #list 排序对象 #key 排序的规则,按什么关键字排序,lambda定义 #reverse True 降序 False 升序 list_new = sorted(list1, key=None, reverse=False) #reverse为True时大到小排序 print(list_new) ``` ![一维列表从小到大排序.png](https://www.mainblog.cn/zb_users/upload/2022/07/202207120822568272417.png "一维列表从小到大排序.png") 二维列表排序 ------ 二维列表和多维列表排序比较麻烦一点,下面还是给出示例方便理解。 ``` list1 = [ [3, 2], [42, 5], [3, 2], [32, 8] ] print(list1) list2 = [] # 去重 for v in list1: if v not in list2: list2.append(v) new_list_1 = sorted(list2, key=(lambda x: x[0]), reverse=False) # 按第1个元素 new_list_2 = sorted(list2, key=(lambda x: x[1]), reverse=True) # 按第2个元素 print("按第1个元素小到大:", new_list_1) print("按第2个元素大到小:", new_list_2) ``` ![二维排序.png](https://www.mainblog.cn/zb_users/upload/2022/07/202207120834219102041.png "二维排序.png") 参考文献 ---- “Python二维列表排序\_新手菜鸟-的博客-CSDN博客\_python二维列表排序.” Blog.csdn.net, blog.csdn.net/qq\_58309598/article/details/119089342. 本文地址:https://www.mainblog.cn/277.html 版权声明:本文为原创文章,版权归 阁主 所有,欢迎分享本文,转载请保留出处! 免责申明:有些内容源于网络,没能联系到作者。如侵犯到你的权益请告知,我们会尽快删除相关内容。 PREVIOUS:易语言编写的软件在Windows server系统下无法运行解决方法 NEXT:Markdown常用语法笔记 文章导航