Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python - Kết hợp hai danh sách giữ lại phần tử trùng lặp của danh sách đầu tiên


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']