Đôi khi chúng ta cần làm sạch một danh sách bằng cách loại bỏ các phần tử trùng lặp. Điều này có thể thực hiện bằng cách kết hợp nhiều phương thức có sẵn trong thư viện chuẩn Python.
Sử dụng set và split
Phương thức split() dùng để tách các phần tử để kiểm tra trùng lặp, và set() lưu trữ các phần tử duy nhất từ danh sách đã tách.
Ví dụ
# Khởi tạo danh sách
listA = ['xy-xy', 'pq-qr', 'xp-xp-xp', 'dd-ee']
print("Danh sách gốc:", listA)
# Sử dụng set() và split()
res = [set(sub.split('-')) for sub in listA]
# Kết quả
print("Danh sách sau khi loại trùng:", res)
Kết quả
Danh sách gốc: ['xy-xy', 'pq-qr', 'xp-xp-xp', 'dd-ee']
Danh sách sau khi loại trùng: [{'xy'}, {'pq', 'qr'}, {'xp'}, {'ee', 'dd'}]
Sử dụng list comprehension
Chúng ta cũng có thể dùng list() kết hợp với vòng lặp for để chỉ lấy các phần tử duy nhất sau khi tách.
Ví dụ
# Khởi tạo danh sách
listA = ['xy-xy', 'pq-qr', 'xp-xp-xp', 'dd-ee']
print("Danh sách gốc:", listA)
# Sử dụng list comprehension
res = list({i for sub in listA for i in sub.split('-')})
# Kết quả
print("Danh sách sau khi loại trùng:", res)
Kết quả
Danh sách gốc: ['xy-xy', 'pq-qr', 'xp-xp-xp', 'dd-ee'] Danh sách sau khi loại trùng: ['dd', 'pq', 'ee', 'xp', 'xy', 'qr']