Python对二维列表list去重并排序

原创 阁主  2022-07-12 07:15:05  阅读 529 次 评论 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

当然接下去就是二维列表去重,可以先使用上面方法测试一下,发现是行不通的。对于二维列表直接使用set会报错TypeError: unhashable type: "list"。

二维数组去重报错.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

第二种方法就是利用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

至于更多的多维列表,推荐大家根据我上面第二种方法去修改实现即可。

一维列表排序

因为使用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

二维列表排序

二维列表和多维列表排序比较麻烦一点,下面还是给出示例方便理解。

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

参考文献

“Python二维列表排序_新手菜鸟-的博客-CSDN博客_python二维列表排序.” Blog.csdn.net, blog.csdn.net/qq_58309598/article/details/119089342.

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

本文地址:https://www.mainblog.cn/277.html
版权声明:本文为原创文章,版权归 阁主 所有,欢迎分享本文,转载请保留出处!
免责申明:有些内容源于网络,没能联系到作者。如侵犯到你的权益请告知,我们会尽快删除相关内容。
NEXT:已经是最新一篇了

评论已关闭!