Trong phân tích dữ liệu với Python, ta thường gặp tình huống cần gộp hai danh sách. Tuy nhiên, việc xử lý các phần tử trùng lặp có thể thách thức. Bài viết này chỉ cách kết hợp hai danh sách bằng cách giữ lại tất cả phần tử từ danh sách đầu tiên và chỉ các phần tử duy nhất từ danh sách thứ hai.
Sử dụng extend
Cách này lấy danh sách đầu tiên làm kết quả, sau đó dùng vòng lặp kiểm tra phần tử của danh sách thứ hai: nếu chưa có trong kết quả thì thêm vào bằng extend.
Ví dụ
# Danh sách A listA = ['A', 'B', 'B', 'X'] # Danh sách B listB = ['B', 'X', 'Z', 'P'] # Tạo kết quả từ listA res = list(listA) # Mở rộng với các phần tử duy nhất của listB res.extend(i for i in listB if i not in res) print(res)
Kết quả:
Đầu ra
['A', 'B', 'B', 'X', 'Z', 'P']
Sử dụng set
Áp dụng set để lấy phần tử duy nhất, tìm hiệu giữa hai tập hợp để lấy phần tử chỉ có ở danh sách thứ hai, sau đó cộng vào danh sách đầu tiên.
Ví dụ
# Danh sách đầu tiên listA = ['A', 'B', 'B', 'X'] # Danh sách thứ hai listB = ['B', 'X', 'Z', 'P'] # Lấy tập hợp duy nhất listA_uniq = set(listA) listB_uniq = set(listB) # Phần tử chỉ có ở listB diff_lists = listB_uniq - listA_uniq res = listA + list(diff_lists) print(res)
Kết quả:
Đầu ra
['A', 'B', 'B', 'X', 'P', 'Z']