Khi làm việc với danh sách Python, bạn thường cần kết hợp dữ liệu từ nhiều danh sách. Làm cách nào bạn làm được việc đó?
Trong hướng dẫn này, chúng ta sẽ xem các cách khác nhau để bạn có thể kết hợp dữ liệu từ nhiều danh sách. Chúng ta cũng sẽ tìm hiểu cách các phương thức danh sách append()
và extend()
làm việc thông qua các ví dụ đơn giản. Bắt đầu nào.
Cách sử dụng Toán tử ‘+’ trong Python
Trước khi chúng ta xem xét cách append()
và extend()
phương pháp hoạt động, chúng ta hãy xem những gì +
Toán tử nối danh sách thực hiện.
Xem xét ví dụ sau nơi chúng tôi có hai danh sách, list_1
và list_2
mà chúng tôi muốn nối (hoặc nối với nhau từ đầu đến cuối):
list_1 = [1,2,3,4,5]
list_2 = [6,7,8]
print(list_1 + list_2)
# Output
[1, 2, 3, 4, 5, 6, 7, 8]
print(list_1)
# Output
[1, 2, 3, 4, 5]
print(list_2)
# Output
[6, 7, 8]
Nếu bạn đọc kỹ đoạn mã trên, bạn có thể thấy như sau.
list_1 + list_2
không thêm các mục từlist_2
đếnlist_1
.- Thay vào đó, nó tạo ra một danh sách mới chứa các mục từ cả hai
list_1
vàlist_2
. - Vì vậy,
list_1
vàlist_2
vẫn không thay đổi.
Nếu chúng ta muốn sửa đổi thì sao list_1
thay vì tạo một danh sách mới? Chà, hãy làm điều đó bằng cách sử dụng append()
và extend()
phương pháp trong phần tiếp theo.
Cách sử dụng Phương thức append() trong Python
Trong phần này, chúng tôi sẽ thêm các mục từ list_2
đến list_1
sử dụng các phương pháp liệt kê. Xem xét các danh sách ví dụ tương tự từ phần trước, bây giờ chúng ta hãy thử sửa đổi list_1
bằng cách thêm các yếu tố từ list_2
với nó.
Đoạn mã dưới đây gọi append()
phương pháp trên list_1
với list_2
như lập luận.
# Let's append list_2 to list_1
list_1.append(list_2)
print(list_1)
# Output
[1, 2, 3, 4, 5, [6, 7, 8]]
# print the length of list_1
print(len(list_1))
# Output
6
Chúng ta thấy rằng list_2
đã được thêm vào như một mục danh sách duy nhất ở cuối list_1
.
Điều này có nghĩa là độ dài của list_1
tăng 1 sau append()
hoạt động.
Điều gì sẽ xảy ra nếu chúng tôi muốn thêm các mục từ list_2
đến list_1
không phải là một danh sách duy nhất ở cuối list_1
nhưng như các mặt hàng cá nhân? Hãy làm điều đó trong phần tiếp theo.
Cách sử dụng Phương thức mở rộng () trong Python
Trước khi chúng ta bắt đầu sử dụng extend()
phương pháp, hãy làm như sau.
- Vòng qua
list_2
- nối thêm mỗi mục từ
list_2
đếnlist_1
for item in list_2:
list_1.append(item)
print(list_1)
# Output
[1, 2, 3, 4, 5, 6, 7, 8]
Bây giờ chúng tôi đã thêm tất cả các mục từ list_2
đến list_1
theo cách chúng tôi muốn. 😀
Chúng ta có thể làm điều tương tự bằng cách gọi extend()
phương pháp trên list_1
với list_2
như lập luận. Bạn có thể thấy cách thức hoạt động của nó trong đoạn mã dưới đây:
# Let's extend list_1 with items from list_2
list_1.extend(list_2)
print(list_1)
# Output
[1, 2, 3, 4, 5, 6, 7, 8]
# print the length of list_1
print(len(list_1))
# Output
8
Vì vậy, nếu bạn mở rộng một danh sách độ dài len1
với một danh sách dài len2
,
độ dài của danh sách mà trên đó extend()
phương pháp được gọi là len1 + len2
.
Có bất kỳ cảnh báo nào chưa?
Điều gì sẽ xảy ra nếu chúng tôi muốn thêm một mục chứ không phải toàn bộ danh sách (hoặc bất kỳ mục nào có thể lặp lại) vào danh sách hiện có của chúng tôi? Trong ví dụ sau, hãy thêm giá trị boolean True
đến list_1
sử dụng append()
như hình bên dưới.
list_1 = [1,2,3,4,5]
list_1.append(True)
print(list_1)
# Output
[1, 2, 3, 4, 5, True]
Điều gì sẽ xảy ra nếu chúng ta thử sử dụng extend()
để làm điều tương tự như trên?
list_1 = [1,2,3,4,5]
list_1.extend(True)
print(list_1)
# Output
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-16-9e4e0d6da67b> in <module>()
1 list_1 = [1,2,3,4,5]
----> 2 list_1.extend(True)
3 print(list_1)
TypeError: 'bool' object is not iterable
Oh, làm như vậy ném một lỗi. 😢 Hãy thử phân tích thông báo lỗi được trả về. TypeError: 'bool' object is not iterable
. Điều này có nghĩa là lập luận của chúng tôi là của một loại không chính xác.
Các extend()
phương thức yêu cầu đối số phải được lặp lại. Trong nội bộ, các extend()
phương thức hoạt động bằng cách lặp qua iterable và thêm từng mục trong iterable vào danh sách đầu tiên. Danh sách, tập hợp, bộ dữ liệu và chuỗi đều là những ví dụ về iterables.
Bất kỳ đối tượng nào mà bạn có thể lặp qua và truy cập các mục riêng lẻ là một lặp đi lặp lại.
Lưu ý rằng cú pháp chung để sử dụng extend()
phương pháp là list_name.extend(iterable)
.
Hãy thử mở rộng () và nối thêm () vào Chuỗi
Các chuỗi về cơ bản là một chuỗi các ký tự và do đó có thể lặp lại. Hãy thử sử dụng extend()
và append()
phương pháp trên list_1
với một chuỗi làm đối số.
Hãy thêm chuỗi ‘Sung sướng’ đến list_1
sử dụng append()
phương pháp.
list_1 = [1,2,3,4,5]
list_1.append('Happy')
print(list_1)
# Output
[1, 2, 3, 4, 5, 'Happy']
Bây giờ chúng ta hãy thử thêm cùng một chuỗi bằng cách sử dụng extend()
phương pháp. Lần này chúng ta không nên gặp lỗi. Thay vào đó, phương thức mở rộng sẽ lặp qua chuỗi và thêm từng ký tự vào list_1
.
Hãy kiểm tra xem điều này có hoạt động trong ví dụ mã sau không.🙂
list_1 = [1,2,3,4,5]
list_1.extend('Happy')
print(list_1)
# Output
[1, 2, 3, 4, 5, 'H', 'a', 'p', 'p', 'y']
Khá trực quan để thấy rằng append()
phương pháp chạy trong thời gian không đổitrong khi extend()
phương thức phải có thời gian chạy tỷ lệ thuận với độ dài của lần lặp được truyền dưới dạng đối số cho phương thức.
kết thúc
Tôi hy vọng bài đăng này làm rõ cách sử dụng append()
và extend()
các phương thức trong Python. Cảm ơn bạn đã đọc, chúc bạn học tập và viết mã vui vẻ!
Bài viết liên quan
Để có phần giới thiệu chung về danh sách Python và các phương thức danh sách phổ biến, vui lòng kiểm tra bài đăng này: Danh sách trong Python – Hướng dẫn toàn diện.