Cách hợp nhất hai danh sách trong Python (Nối & mở rộng)

Tìm hiểu những cách tốt nhất để hợp nhất và kết hợp hai danh sách trong Python. So sánh toán tử cộng, phương thức mở rộng, giải nén danh sách và các tùy chọn chuỗi.

Hãy thử Giải pháp này trong Trình chỉnh sửa

Tổng quan

Kết hợp các tập dữ liệu danh sách là thao tác thường xuyên khi tổng hợp kết quả, xử lý lô dữ liệu hoặc nối thêm các mục vào bộ sưu tập. Python cung cấp một số cách để hợp nhất danh sách, tùy thuộc vào việc bạn muốn sửa đổi danh sách tại chỗ hay tạo danh sách mới.

Để tạo một danh sách hoàn toàn mới bằng cách kết hợp hai danh sách hiện có, cách tiếp cận đơn giản nhất là sử dụng toán tử nối `+` (ví dụ: `list3 = list1 + list2`). Ngoài ra, trongPython 3.5+, bạn có thể sử dụng cú pháp giải nén danh sách `[*list1, *list2]`, cú pháp này có tính biểu cảm cao và cho phép bạn dễ dàng chèn các phần tử bổ sung vào bất kỳ đâu trong quá trình tạo danh sách.

Nếu bạn muốn sửa đổi tại chỗ một danh sách hiện có bằng cách thêm các phần tử từ một danh sách khác, thì phương thức `.extend()` là lựa chọn hiệu quả nhất. Điều này tránh việc phân bổ bộ nhớ cho danh sách mới và sửa đổi trực tiếp danh sách mục tiêu. Để duyệt danh sách đã hợp nhất một cách hiệu quả về bộ nhớ mà không trùng lặp dữ liệu trong bộ nhớ, bạn có thể sử dụng `itertools.chain()`.

Đầu ra mã & thực thi

Tập lệnh này thể hiện việc hợp nhất hai danh sách bằng cách sử dụng các kỹ thuật toán tử, mở rộng và giải nén.

list_a = [1, 2, 3]
list_b = [4, 5, 6]

# 1. Plus operator (creates a new list)
merged_plus = list_a + list_b
print("Using + operator:", merged_plus)

# 2. Unpacking operator (creates a new list)
merged_unpack = [*list_a, *list_b]
print("Using unpacking:", merged_unpack)

# 3. Extend method (modifies list_a in-place)
list_a.extend(list_b)
print("After extending list_a:", list_a)
Đầu ra thiết bị đầu cuối
Using + operator: [1, 2, 3, 4, 5, 6]
Using unpacking: [1, 2, 3, 4, 5, 6]
After extending list_a: [1, 2, 3, 4, 5, 6]

Triển khai từng bước

  • Sử dụng toán tử + để hợp nhất danh sách và trả về danh sách kết hợp mới.
  • Gọi list_a.extend(list_b) để nối trực tiếp tất cả các phần tử của list_b vào list_a.
  • Sử dụng toán tử giải nén dấu hoa thị [*list_a, *list_b] để tạo danh sách từ các phần tử của cả hai.

Câu hỏi thường gặp

Sự khác biệt giữa nối thêm() và mở rộng() là gì?

append() thêm toàn bộ đối số danh sách dưới dạng một phần tử lồng nhau, trong khi đó, phần mở rộng() giải nén đối số danh sách và thêm từng phần tử riêng lẻ.

Làm cách nào để hợp nhất các danh sách trong khi loại bỏ các danh sách trùng lặp?

Bạn có thể hợp nhất chúng rồi chuyển kết quả thành một tập hợp hoặc chuyển đổi chúng thành tập hợp trước: list(set(list_a) | set(list_b)).

Chủ đề liên quan

Tài nguyên Python được đề xuất

Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.