Cách sao chép List trong Python
Bạn có thể sao chép list trong Python dùng phương thức copy(), cắt lát (slicing), phương thức list(), và list comprehension. Phương thức copy() là cách trực tiếp nhất để sao chép list Python.
Khi làm việc với list trong Python, bạn có thể gặp tình huống muốn tạo bản sao của list đó.
Ví dụ: bạn tạo chương trình dùng danh sách sinh viên năm trước để tạo danh sách cập nhật cho năm học mới. Chương trình này nên giữ nguyên danh sách lớp cũ.
Cách sao chép List trong Python
Có bốn phương pháp để sao chép list trong Python:
- Sử dụng cú pháp cắt lát (slicing)
- Sử dụng phương thức
copy() - Sử dụng phương thức
list() - Khai báo list comprehension
Hướng dẫn này sẽ thảo luận, dùng ví dụ, cách dùng copy(), slicing, list comprehension, và list() để tạo bản sao của list trong Python.
Bạn có thể dùng dấu bằng để tạo bản sao của list. Nhưng list mới sẽ được liên kết với list cũ. Nghĩa là nếu bạn thay đổi list mới, list cũ cũng thay đổi. List mới tham chiếu đến cùng đối tượng với list cũ.
Sao chép List Python: Phương thức copy()
Phương thức copy() của Python tạo bản sao của list hiện có. Phương thức copy() được thêm vào cuối đối tượng list nên nó không chấp nhận tham số nào. copy() trả về list mới.
Python có hàm built-in hỗ trợ tạo bản sao nông (shallow copy) của list: copy(). Bạn có thể dùng phương thức copy() để nhân bản list và giữ nguyên list gốc.
Phương thức copy() không nhận tham số. Bạn thêm nó vào cuối tên list. Cú pháp tạo đối tượng mới bằng phương thức copy() của Python:
new_list = old_list.copy()
Ví dụ phương thức copy() trong Python
Hãy đi qua ví dụ để thấy cách dùng copy(). Giả sử ta经营一家水果摊,想更新产品列表以反映夏季新上市的水果。
Để làm vậy, ta muốn tạo danh sách sản phẩm mới dựa trên danh sách cũ. Ta muốn lưu danh sách cũ để dùng sau. Điều này cho phép theo dõi sản phẩm mùa trước trong danh sách cũ, và sản phẩm mùa này trong danh sách mới.
Ta có thể dùng copy() để nhân bản list và hoàn thành nhiệm vụ. Ví dụ dùng copy() tạo bản sao danh sách sản phẩm trái cây:
spring_fruits = ['Apricot', 'Avocado', 'Kiwi', 'Grapefruit', 'Cherry', 'Strawberry'] summer_fruits = spring_fruits.copy() print(summer_fruits)
Kết quả chương trình:
['Apricot', 'Avocado', 'Kiwi', 'Grapefruit', 'Cherry', 'Strawberry']
Dòng đầu tiên, ta định nghĩa biến spring_fruits theo dõi trái cây bán mùa xuân.
Sau đó, ta dùng copy() tạo list mới summer_fruits chứa tất cả mục trong mảng spring_fruits. Cuối cùng, in summer_fruits ra màn hình. Như bạn thấy, summer_fruits chứa cùng giá trị với list gốc spring_fruits.
Bây giờ có bản sao, ta có thể sửa đổi nó để phản ánh sản phẩm mới. Ta có thể dùng append() và remove().
Sao chép List Python: Cắt lát (Slicing)
Cắt lát là kỹ thuật trong Python để lấy mục từ list. Dùng kỹ thuật cắt lát, bạn có thể lấy mục riêng lẻ, nhiều mục, hoặc tất cả mục trong list. Nếu quan tâm tìm hiểu thêm về cắt lát, hãy đọc hướng dẫn phương thức list Python của chúng tôi.
Hãy dùng ví dụ trên để thấy cách dùng cắt lát sao chép list. Giả sử ta经营水果摊,想创建夏季产品新列表,包含所有春季产品。Ta có thể làm bằng clone slicing.
Mã tạo bản sao list dùng slice cloning:
spring_fruits = ['Apricot', 'Avocado', 'Kiwi', 'Grapefruit', 'Cherry', 'Strawberry'] summer_fruits = spring_fruits[:] print(summer_fruits)
Kết quả:
['Apricot', 'Avocado', 'Kiwi', 'Grapefruit', 'Cherry', 'Strawberry']
Mã tương tự ví dụ copy(). Khác biệt là thay vì dùng copy(), ta dùng ký hiệu clone của Python.
Ký hiệu clone là dấu hai chấm trong ngoặc vuông ([:]), như bạn thấy trong ví dụ. Phương pháp này tạo bản sao của list cũ.
Sao chép List Python: Phương thức list()
Bạn cũng có thể dùng hàm list() tạo bản sao của list trong Python. Phương thức list() sao chép nhận một tham số: đối tượng bạn muốn chuyển thành list. Cú pháp:
list(list_name)
Hãy dùng ví dụ quán trái cây minh họa phương pháp này:
spring_fruits = ['Apricot', 'Avocado', 'Kiwi', 'Grapefruit', 'Cherry', 'Strawberry'] summer_fruits = list(spring_fruits) print(summer_fruits)
Kết quả list mới:
['Apricot', 'Avocado', 'Kiwi', 'Grapefruit', 'Cherry', 'Strawberry']
Như bạn thấy, gán list(spring_fruits) cho summer_fruits tạo bản sao của spring_fruits và lưu làm summer_fruits. Ta in list mới ra màn hình dùng print().
Sao chép List Python: List Comprehension
Bạn có thể tạo list ngắn gọn dùng list comprehension của Python. Phương pháp này dùng biểu thức for...in.
List comprehension hoạt động bằng cách lặp qua tất cả mục trong list hiện có dùng vòng lặp for và điền list mới với các mục đó.
Cú pháp list comprehension trong Python:
new_list = [i for i in old_list]
Hãy dùng ví dụ quán trái cây minh họa:
spring_fruits = ['Apricot', 'Avocado', 'Kiwi', 'Grapefruit', 'Cherry', 'Strawberry'] summer_fruits = [i for i in spring_fruits] print(summer_fruits)
Mã dùng list comprehension tạo list mới summer_fruits, trả về:
['Apricot', 'Avocado', 'Kiwi', 'Grapefruit', 'Cherry', 'Strawberry']
Như bạn thấy, chương trình tạo list summer_fruits chứa tất cả giá trị trong spring_fruits gốc.
Kết luận
Hướng dẫn này đã xem bốn cách tạo bản sao list trong Python. Ta thảo luận cách dùng copy(), kỹ thuật clone slicing, hàm list(), và list comprehension.
Bây giờ bạn đã trang bị kiến thức để tạo bản sao list trong Python! Nếu bạn tìm tài nguyên học tập hoặc khóa học giúp học Python, hãy xem hướng dẫn "Cách học Python" của chúng tôi.