Python去重攻略:高效处理列表重复元素的八种方法
python中列表如何去重
1.在Python中,您可以使用字典的“fromkeys()”方法删除重复列表。例如,给定列表“L=[1,2,3,4,5,6,6,5,4,3,2,1]”,您可以创建一个空字典“d”,然后可以使用“fromkeys()`方法将列表元素作为字典的键,值为`none`。
这会产生一个字典,其中的键是重复的元素。
```PythonL=[1,2,3,4,5,6,6,5,4,3,2,1]d={}L=d.fromkeys(L)print(L)#输出:dict_keys([1,2,3,4,5,6])``请注意,`fromkeys()`方法返回字典键的视图,而不是列表。
需要使用“list()”函数将字典键视图转换回列表。
2.另一种删除重复的方法是使用集合。
集合是唯一元素的无序集合。
将列表转换为集合,自动删除重复元素。
然后可以将该集合转换为列表。
```PythonL2=[1,2,3,4,5,6,6,5,4,3,2,1]L2=set(L2)print(L2)#输出:{1,2,3,4,5,6}L2=List(L2)Print(L2)#输出:[1,2,3,4,5,6]````3也可以使用循环和判断手动复制可以去除。
在循环中,检查当前元素是否已在结果列表中,如果不在,则将其添加到结果列表中。
```pythonL3=[1,2,3,4,5,6,6,5,4,3,2,1]L4=[]forxinL3:ifxnotinL4:L4.append(x)print(L4)#输出:[1,2,3,4,5,6]```当列表很大时,这种方法效率较低,因为它需要对每个元素进行线性搜索以检查重复项。
python内置函数
8个超级易用的内置函数set()、eval()、sorted()、reverse()、map()、reduce()、filter()和enumerate()。
1.set()
当您需要对列表进行重复数据删除时,set()函数会派上用场。
用于创建元素无序且不重复的集合。
创建集合对象后,还可以使用并集、交集和差集函数。
2.eval()
之前有人问如何在Python中写一个算术运算符,插入一个字符串公式,然后直接输出结果。
使用eval()函数很容易做到这一点:eval(str_expression)将字符串转换为表达式并执行它。
3.sorted()
在数据处理中,我们经常会用到排序操作,比如对列表、字典、元组中的元素进行正向/反向排序。
现在您需要使用sorted(),它可以对任何可迭代对象进行排序并返回一个列表。
4.revered()
如果您需要反转序列的元素,reverse()函数可以帮助您。
revered()接受一个序列,反转序列中的元素,最后返回一个迭代器。
5.map()
在进行文本处理时,如果想要将序列中的每个单词大写。
此时就可以使用map()函数了。
map()会将指定的序列映射到提供的函数,并最终返回迭代器。
即map()函数会使用指定的方法处理序列中的每个元素,并最终返回处理后的序列。
例如:对列表中的每个数字进行平方。
6.reduce()
如上所述,我们使用map()函数对列表中的每个数字进行平方。
所以我想将列表中的每个元素相乘,这次我使用reduce()函数该怎么办?
reduce()会累积参数序列中的元素。
首先对第一和第二个元素进行函数运算,然后将生成的结果对第三个元素进行函数运算,以此类推,最后生成所有元素累加运算的结果。
你可能已经注意到,reduce()函数不再是Python3中的内置函数,而是被迁移到functools模块中,可见reduce()函数有多么重要!
7.filter()
filter()函数用于过滤序列,过滤掉不满足条件的元素并返回一个迭代器对象,如果想将其转换为列表,可以使用list()来转换.
这里接收两个参数,第一个是函数,第二个是序列,将序列的每个元素作为参数传递给函数进行判断,然后返回True或False。
True元素在新列表中返回。
8.enumerate()
enumerate()函数用于将可遍历的数据对象(例如列表、元组或字符串)组合成索引序列,而Output列将数据和索引组合在一起数据一般用在for循环中。