Có rất nhiều phương thức phổ biến trong Python để làm việc với danh sách. Trong số đó, "append" và "extend" là hai phương thức quan trọng mà thường gây nhầm lẫn cho người mới học Python.
Trong bài viết này, chúng ta sẽ tìm hiểu từng phương pháp để hiểu rõ sự khác biệt giữa chúng.
Phương pháp append
Phương pháp "append" được sử dụng để thêm một phần tử vào cuối danh sách. Phần tử này có thể thuộc bất kỳ kiểu dữ liệu nào, bao gồm cả chuỗi, số nguyên, boolean hoặc thậm chí một danh sách khác.
Ví dụ, nếu bạn muốn thêm một phần tử mới vào danh sách L với 4 phần tử ban đầu, bạn có thể sử dụng phương thức append như sau:
L = [1, 2, 3, 4] L.append(5) print(L)
Kết quả sẽ là: [1, 2, 3, 4, 5]
Điểm quan trọng cần lưu ý là phương pháp append chỉ thêm một phần tử vào danh sách, do đó độ dài của danh sách chỉ tăng lên một. Điều này quan trọng vì sau này bạn có thể không cần sử dụng phương pháp "extend".
Nếu bạn tò mò, hãy thử thêm một danh sách vào danh sách đã có bằng cách sử dụng phương pháp append:
L = [1, 2, 3, 4] L.append([5, 6, 7]) print(L)
Kết quả sẽ là: [1, 2, 3, 4, [5, 6, 7]]
Như bạn có thể thấy, chúng ta đã thêm một đối tượng (có thể là một danh sách) vào danh sách L của chúng ta. Sau khi thay đổi, độ dài của danh sách chỉ tăng lên một.
Phương pháp extend
Phương pháp "extend" cũng là một phương pháp phổ biến để thêm các phần tử vào danh sách. Tuy nhiên, khác với append, extend chỉ có thể nhận đối tượng có thể lặp lại làm tham số.
Đối tượng có thể lặp lại có thể là bất kỳ đối tượng nào có thể được lặp qua, chẳng hạn như chuỗi, danh sách, bộ dữ liệu, từ điển, hoặc bất kỳ đối tượng nào có phương thức iter.
Phương pháp extend làm việc một cách đơn giản: nó lặp qua đối tượng lặp lại một phần tử mỗi lần và nối từng phần tử vào danh sách.
Ví dụ, hãy thử mở rộng danh sách bằng một danh sách khác:
L = [1, 2, 3, 4] L.extend([5, 6, 7]) print(L)
Kết quả sẽ là: [1, 2, 3, 4, 5, 6, 7]
Như bạn có thể thấy trong ví dụ trên, phương thức extend lấy một danh sách (có thể lặp lại) làm tham số và nối từng phần tử của danh sách vào danh sách ban đầu L. Ba phần tử số nguyên đã được thêm vào danh sách, và kích thước của danh sách tăng lên ba.
Thành quả này rõ ràng khác biệt so với phương pháp append.
Hãy xem một ví dụ khác với một đối tượng lặp khác, chuỗi:
L = [1, 2, 3, 4] L.extend("hi") print(L)
Kết quả sẽ là: [1, 2, 3, 4, 'h', 'i']
extend lặp qua các ký tự "hi" và nối từng ký tự vào danh sách L.
Lưu ý về phương pháp extend so với toán tử (+)
Một câu hỏi bạn có thể đặt ra là phương pháp extend khác với việc sử dụng toán tử + như thế nào.
Ví dụ sau có vẻ tương tự như việc mở rộng danh sách bằng danh sách khác, phải không?
L = [1, 2, 3, 4] L + [5, 6, 7] print(L)
Kết quả sẽ là: [1, 2, 3, 4]
Có hai sự khác biệt chính:
-
Bạn không thể sử dụng toán tử + để mở rộng danh sách bằng bất kỳ đối tượng lặp nào khác ngoại trừ danh sách. Ví dụ: bạn không thể sử dụng toán tử + để mở rộng danh sách bằng chuỗi hoặc tuple hoặc dict.
-
Phương pháp extend thay đổi danh sách ban đầu trong khi toán tử + tạo ra một danh sách mới. Ví dụ:
L = [1, 2, 3, 4] L + [5, 6] print(L)
Kết quả là: [1, 2, 3, 4]
Ở ví dụ trước, lưu ý rằng danh sách L không bị thay đổi. Điều này xảy ra vì toán tử + tạo ra một đối tượng danh sách mới chứa danh sách được nối.Để sử dụng danh sách kết quả, bạn cần lưu trữ nó trong một biến khác.
c = L + [5, 6] print(c)
Kết quả sẽ là: [1, 2, 3, 4, 5, 6]
Kết luận
Tóm lại, cả phương pháp extend và append đều là các phương thức danh sách được sử dụng để thêm các phần tử vào danh sách.
-
Phương pháp append thêm một đối tượng thuộc bất kỳ loại nào vào danh sách.
-
Phương pháp extend hoạt động trên các đối tượng có thể lặp và nối từng phần tử trong lần lặp vào danh sách.
-
Sử dụng toán tử + không tương đương với sử dụng phương pháp extend.
Đây là một bài viết được dịch lại từ nguyenpv.com