list如何去重?去重后如何保持有序?

  1. 使用集合(set)进行去重:

    • 将列表转换为集合,因为集合中的元素是唯一的,会自动去除重复项。
    • 然后将集合转换回列表,以保持有序性(如果需要)。

    示例代码:

    my_list = [2, 1, 3, 2, 4, 3, 5]
    
    my_list = list(set(my_list))
    

    此方法会去除列表中的重复元素,并返回一个去重后的列表。但是,由于集合是无序的,转换回列表后,原始顺序可能会被打乱。

  2. 使用列表推导式保持有序性:

    • 利用列表推导式遍历原始列表,并构建一个新的列表,只包含不重复的元素。
    • 在构建新列表时,可以添加一个条件,仅将还没有出现过的元素添加到新列表中。

    示例代码:

    my_list = [2, 1, 3, 2, 4, 3, 5]
    
    new_list = []
    [new_list.append(item) for item in my_list if item not in new_list]
    

    这个方法会遍历原始列表并添加不重复的元素到新列表中,从而实现去重操作。由于是按顺序遍历并添加元素,所以可以保持有序。

需要注意的是,这两种方法都会创建一个新的列表对象。如果你希望在原始列表上进行就地修改,可以使用其他方法,比如通过循环和条件判断手动去重。


那么第一种方法如何改进使其保持原来的顺序?

my_list = [2, 1, 3, 2, 4, 3, 5]

my_list1 = list(set(my_list))

my_list1 = sorted(my_list1,key=my_list.index)
print(my_list1)
# result
[2, 1, 3, 4, 5]

这里的index是不加(),和map函数一样只需要一个函数名即可,index的作用可以看我之前发的python基础入门

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值