Python中List的去重问题

本文探讨了Python中list去重的几种方法,包括使用set、Counter和循环删除。强调了set方法会改变元素顺序和类型,不适合包含不可哈希元素的list;Counter能统计元素个数,适用于去重但操作相对复杂;而最简单的循环删除方法虽然通用,但效率较低。文中指出,针对不可哈希对象的去重问题,需寻找更通用的解决方案。
摘要由CSDN通过智能技术生成

Python中的去重问题,这或许是个简单的问题。

比如一个list:a = [1,3,2,9,5,3,1,5],如何删除重复元素,嗯,有一个高端的方法:

#方法一

a = set(a)

a:1, 2, 3, 5, 9.哇,好高端,事情可没这么简单,观察,a的顺序变的,类型也变了

print a,type(a)

set([1, 2, 3, 5, 9]) <type 'set'>

a变成了python里面的集合类型,顺序且无重复元素,跟sort的功能有点类似,好用,但是这个上述方法既改变的a的类型又改变了a中元素既有顺序(虽然用类型转换成将a变为list类型。

注意a里面的元素全是数字,如果将a里面有其它元素比如:

a = [1,3,2,9,5,3,1,5,[1,2],[1,2]]

print set(a)

TypeError: unhashable type: 'list'

于是发现set这个方法不好使了,原因是a里面出现了不可哈希的元素类型,那何为可哈希元素呢?

python文档里面是这么说的:

An object ishashable if it has a hash value which never changes duringits lifetime (it needs a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值