Python Lists: Append vs Extend (Có ví dụ)

1627

Bài viết được sự cho phép của tác giả Phạm Văn Nguyên

Hai trong số các phương thức Danh sách phổ biến nhất trong Python là các phương thức “append” và “extend”

Tuy nhiên, hai phương thức này là nguyên nhân của rất nhiều nhầm lẫn và hiểu lầm giữa những người mới bắt đầu Python.

  11 tip học Python dành cho các “newbie”
  71 trích đoạn code Python cho các vấn đề hàng ngày của bạn

Trong bài viết này, tôi sẽ giải thích từng phương pháp làm gì và cho bạn thấy chính xác sự khác biệt giữa chúng.

Đầu tiên: Append

python

append phương thức được sử dụng để thêm một đối tượng vào một danh sách.

Đối tượng này có thể thuộc bất kỳ kiểu dữ liệu , chuỗi, số nguyên, boolean hoặc thậm chí một danh sách khác.

Giả sử bạn muốn  thêm  một mục vào danh sách L ban đầu có 4 phần tử

>>> L = [1, 2, 3, 4]
>>> L.append(5)
>>> L
[1, 2, 3, 4, 5]

Như bạn có thể thấy, phương thức chắp thêm mục 5 mới vào danh sách.

Không cần phải nói, độ dài của danh sách đã tăng thêm một (và chỉ một) vì phương thức chắp thêm chỉ thêm một đối tượng vào danh sách.

Đây là một sự khác biệt quan trọng bởi vì bạn sẽ thấy sau này không nhất thiết phải là trường hợp “extend” .

Được rồi, vì tò mò, hãy thử nối thêm một danh sách vào danh sách của chúng tôi.

>>> L = [1, 2, 3, 4]
>>> L.append([5, 6, 7])
>>> L
[1, 2, 3, 4, [5, 6, 7]]

Vì vậy, những gì chúng tôi đã làm ở đây là chúng tôi đã thêm một đối tượng (có thể thuộc danh sách loại) vào danh sách L của chúng tô.

Một lần nữa, sau khi sửa đổi, chiều dài danh sách chỉ tăng một.

Bây giờ hãy xem một phương pháp tương tự nhưng khác biệt.

Thứ hai: Extend

python

extend là một phương pháp danh sách rất phổ biến.

Không giống như chắp thêm có thể lấy một đối tượng thuộc bất kỳ loại nào làm đối số, phần mở rộng chỉ có thể lấy một đối tượng có thể lặp lại làm đối số.

Một đối tượng có thể lặp lại là một đối tượng mà bạn có thể lặp qua như chuỗi, danh sách, bộ dữ liệu, dicts hoặc bất kỳ đối tượng nào có phương thức __iter__

Những gì extend làm rất đơn giản, nó lặp đi lặp lại thông qua đối tượng lặp lại (iterable ) một mục tại một thời điểm và nối thêm từng mục vào danh sách.

Ví dụ: hãy thử mở rộng danh sách theo danh sách khác.

>>> L = [1, 2, 3, 4]
>>> L.extend([5, 6, 7])
>>> L
[1, 2, 3, 4, 5, 6, 7]

Như bạn có thể thấy trong ví dụ trên, extend sẽ lấy một danh sách (có thể lặp lại) làm đối số và nối từng mục của danh sách vào L.

Ba đối tượng số nguyên đã được thêm vào danh sách và kích thước danh sách tăng thêm ba.

Hành vi này rõ ràng là khác với phương pháp append .

Hãy xem xét một ví dụ khác với một đối tượng lặp khác, các chuỗi.

>>> L = [1, 2, 3, 4]
>>> L.extend("hi")
>>> L
[1, 2, 3, 4, 'h', 'i']

Điều tương tự!

extend lặp thông qua các ký tự  “hi” và gắn từng ký tự vào chữ L.

Lưu ý bên lề: Extend khác với Toán tử (+) như thế nào?

Một câu hỏi bạn có thể hỏi là phương thức mở rộng khác với sử dụng toán tử + như thế nào.

>>> L = [1, 2, 3, 4]
>>> L + [5, 6, 7]
[1, 2, 3, 4, 5, 6, 7]

Code ở trên dường như có cùng tác dụng mở rộng danh sách theo danh sách khác, phải không?

Vâng, có hai sự khác biệt chính:

1. bạn không thể sử dụng toán tử (+) để mở rộng danh sách bằng bất kỳ lần lặp nào khác ngoài danh sách

Ví dụ: bạn không thể sử dụng toán tử (+) để mở rộng danh sách bằng string hoặc tuple hoặc dist

2. extend sửa đổi danh sách tại chỗ trong khi toán tử (+) tạo danh sách mới

>>> L = [1, 2, 3, 4]
>>> L + [5, 6]
[1, 2, 3, 4, 5, 6]
>>> L
[1, 2, 3, 4]

Trong ví dụ trước, lưu ý rằng L hoàn toàn không thay đổi.

Điều này là do toán tử cộng 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ả, trước tiên bạn có thể cần lưu trữ nó trong một biến khác.

>>> c = + [56] >>> c [123456]

Đọc: Danh sách Python vs Tuples

Phần kết luận

1- Cả extend và append là các phương thức danh sách được sử dụng để thêm các mục vào danh sách.

2- append  thêm một đối tượng thuộc bất kỳ loại nào vào danh sách.

3- extend hoạt động trên các đối tượng có thể lặp và nối thêm mọi mục trong lần lặp vào danh sách.

4- sử dụng toán tử (+) không tương đương với sử dụng phương thức extend.

Bài viết gốc được đăng tải tại nguyenpv.com

Có thể bạn quan tâm:

Xem thêm các tìm việc làm python hấp dẫn tại TopDev