在Python中,删除列表中的重复项可以通过以下几种方法实现:
1. 使用字典(`dict.fromkeys`):
mylist = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
mylist = list(dict.fromkeys(mylist))
print(mylist) 输出:[1, 2, 3, 4]
2. 使用排序和列表推导式:
listA = ['python', '语言', '是', '一门', '动态', '语言']
listA.sort()
resultList = [x for i, x in enumerate(listA) if x not in listA[:i]]
print(resultList) 输出:['python', '语言', '是', '一门', '动态', '语言']
3. 使用`OrderedDict`(有序字典):
from collections import OrderedDict
mylist = ['Jacob', 'Harry', 'Mark', 'Anthony', 'Harry', 'Anthony']
resList = list(OrderedDict.fromkeys(mylist))
print(resList) 输出:['Jacob', 'Harry', 'Mark', 'Anthony']
4. 使用列表推导式和`not in`操作符:
mylist = [10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1]
list3 = [x for i, x in enumerate(mylist) if x not in mylist[:i]]
print(list3) 输出:[10, 1, 2, 3, 15, 20, 44, 56]
5. 使用`set`构造函数:
mylist = [10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1]
list3 = list(set(mylist))
print(list3) 输出:[1, 2, 3, 10, 15, 20, 44, 56]
6. 使用`sort`函数和`index`方法:
mylist = [10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1]
list3 = list(set(mylist))
list3.sort(key=mylist.index)
print(list3) 输出:[1, 2, 3, 10, 15, 20, 44, 56]
7. 循环遍历并创建新列表:
mylist = [10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1]
list5 = []
for el in mylist:
if el not in list5:
list5.append(el)
print(list5) 输出:[10, 1, 2, 3, 15, 20, 44, 56]
以上方法各有优缺点,选择合适的方法取决于具体的需求和列表的特性。需要注意的是,使用`set`方法去重会丢失原始列表的顺序,而使用`OrderedDict`或列表推导式结合`not in`可以保留顺序。