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.
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)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ìm hiểu cách sắp xếp danh sách trong Python bằng phương thức Sort() và hàm Sort(). Khám phá các ví dụ về sắp xếp khóa tùy chỉnh và thứ tự đảo ngược.
Cách kiểm tra xem danh sách có trống trong Python hay khôngTìm hiểu các cách Pythonic nhất để kiểm tra xem danh sách có trống trong Python hay không. So sánh các kiểm tra boolean ngầm với so sánh độ dài.
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.
Danh sách Python
Tìm hiểu mọi thứ về danh sách Python. Khám phá cách tạo, cắt, sửa đổi và lặp qua các mảng trong Python nguyên bản.
Bảng cheat phương thức chuỗi Python
Hướng dẫn tham khảo đầy đủ về thao tác chuỗi Python. Làm chủ định dạng, tìm kiếm, phân tách, thay thế và kiểm tra thuộc tính chuỗi.
Python vs JavaScript: Ngôn ngữ lập trình nào tốt nhất?
So sánh toàn diện giữa Python và JavaScript. Khám phá sự khác biệt về cú pháp, hiệu suất, trường hợp sử dụng (phụ trợ so với giao diện người dùng) và các ví dụ về mã hóa.