arrayList去重
时间: 2023-06-22 12:38:11 浏览: 81
在 Python 中,可以使用 set() 函数对 list 去重。但是,如果要对 list 中的自定义对象去重,则需要自定义对象的 __hash__ 和 __eq__ 方法。
示例代码:
```python
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
def __hash__(self):
return hash((self.name, self.age))
def __eq__(self, other):
return self.name == other.name and self.age == other.age
students = [Student('Tom', 18), Student('Jerry', 18), Student('Tom', 20), Student('Jerry', 18)]
unique_students = list(set(students))
for student in unique_students:
print(student.name, student.age)
```
在上面的例子中,我们定义了一个 `Student` 类,包含 `name` 和 `age` 两个属性。然后,我们对 `Student` 类重写了 `__hash__` 和 `__eq__` 方法,以便于 Python 对其进行 hash 和比较操作。接着,我们创建了一个包含四个 `Student` 对象的 list,并使用 set() 函数对其进行去重。最后,我们遍历了去重后的 list,打印了每个学生的 `name` 和 `age` 属性。
需要注意的是,如果自定义对象包含可变属性,则需要额外考虑属性值的可变性对去重的影响。如果需要对 list 中的自定义对象按照某个属性进行去重,可以使用 functools 模块中的 cmp_to_key() 函数。
阅读全文