Python列表去重20种方法详解及实例
版权申诉
21 浏览量
更新于2024-09-11
收藏 153KB PDF 举报
在Python编程中,列表去重是一项常见的操作,特别是在处理数据清洗和预处理时。本文将详细介绍Python中去重列表的N种方法,包括但不限于:
1. **遍历法(for循环)**:通过逐个检查列表中的元素,如果元素不在新列表`new_list`中,就将其添加。例如,`unique(data)`函数采用这种方式,遍历输入列表`data`,并使用`if not item in new_list`条件判断,确保新列表只包含唯一的元素。这种方法的时间复杂度为O(n^2),因为每次检查都需要遍历新列表。
```python
def unique(data):
new_list = []
for item in data:
if item not in new_list:
new_list.append(item)
return new_list
```
2. **范围迭代和索引判断**:另一种方法是使用`range(len(data))`来创建一个索引序列,然后直接检查当前索引对应的值是否已在新列表中。这减少了额外的查找次数,但依然存在O(n^2)的时间复杂度。
```python
def unique(data):
new_list = []
for i in range(len(data)):
if data[i] not in new_list:
new_list.append(data[i])
return new_list
```
3. **列表推导式**:这是一种更简洁的实现方式,它结合了前面两种方法的思想,用一行代码完成去重。这里,`[new_list.append(i) for i in data if not i in new_list]`这一行相当于遍历数据并检查,只有当元素不在新列表中时才执行`append`操作。这种方法的时间复杂度也是O(n^2)。
```python
def unique(data):
new_list = []
[new_list.append(i) for i in data if not i in new_list]
return new_list
```
4. **利用set数据结构**:Python的内置`set`数据结构不允许有重复元素,可以利用这一点来去重。由于set的查找速度较快,通常情况下这种做法比遍历法快得多,但会改变元素的原始顺序(因为set是无序的)。
```python
def unique(data):
return list(set(data))
```
5. **使用dict(字典)**:利用字典的键值对特性,元素作为键,出现多次时只保留第一次。同样,这种方法会改变元素顺序。
```python
def unique(data):
return list(dict.fromkeys(data))
```
以上每种方法都有其适用场景和效率上的差异,对于大规模数据,set和dict方法更为高效。然而,如果你需要保持元素的原始顺序,就不能选择set或dict。根据实际需求,合理选择适合的方法能提高代码的性能和可读性。通过对比和实践,可以更好地理解这些技巧,并根据项目特点进行优化。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2020-09-17 上传
2020-09-21 上传
2020-12-25 上传
2020-09-18 上传
2020-09-21 上传
2020-09-17 上传
weixin_38703468
- 粉丝: 14
- 资源: 950
最新资源
- cursomcjava
- Asistant-of-QQsnokergame的VC.NET
- 广东工业大学计算机组成原理实验源码及实验报告f4a f4b
- rails-deployment:可用于处理 rails 的简单脚本
- 用于学习php+mysql+bootstrap搭建的简单博客系统。.zip
- AlphaPack
- React-ts-material-dashboard-template:具有Material UI的React-Typescript的模板
- io-demo:学习IO
- Java SSM基于Android的个人健康系统【优质毕业设计、课程设计项目分享】
- mon-cherie:Mon Cherie-Projeto da Boutique
- 在线学习网站 mysql+django实现.zip
- SIGFOX_API_RoR:SIGFOX API 与 Ruby on Rails 的集成
- KNMI-data-man:操纵的KNMI数据集以供进一步使用,例如记录数或摘要
- desafio-treino-junto:CRUD em AngularJS,PHP和MySQL
- GlobalWWJugs:全世界的水罐
- 广东工业大学大一C语言课设 比赛评分系统