Chuyển đến nội dung chính

Cách sử dụng phương thức pop() trong Python

Tìm hiểu cách dùng phương thức pop() của Python để xóa phần tử khỏi list và dictionary, bao gồm cách xóa khi đang lặp. Học cách tránh các lỗi thường gặp như IndexError và KeyError.
Đã cập nhật 5 thg 6, 2026  · 9 phút đọc

Phương thức pop() là một hàm quan trọng trong Python, được dùng trong thao tác dữ liệu để xóa và trả về phần tử được chỉ định từ list hoặc dictionary. Lập trình viên Python ưa dùng pop() vì đây là cách đặc biệt đơn giản để chỉnh sửa cấu trúc dữ liệu như list và dictionary.

Trước khi đi sâu hơn, tôi rất khuyến nghị bạn học khóa Introduction to Python của DataCamp để nắm các kiến thức cơ bản về ngôn ngữ Python. Python Cheat Sheet for Beginners cũng sẽ giúp bạn tra cứu và hiểu cú pháp cùng các hàm khác nhau của Python.

Câu trả lời nhanh: Cách dùng phương thức pop() trong Python

Phương thức pop() được dùng trong list và dictionary để xóa các mục cụ thể và trả về giá trị. Tôi sẽ minh họa nhanh cho cả hai. Ví dụ đầu tiên cho thấy cách xóa một phần tử khỏi list bằng phương thức pop(). Đoạn mã sau in ra 5.

# Create a list
my_list = [1, 2, 3, 4, 5]

# Removes and returns the last element of the list
last_element = my_list.pop()
print(last_element)

Ví dụ tiếp theo bên dưới cho thấy cách dùng phương thức pop() để xóa một key cụ thể khỏi dictionary. Đoạn mã sau in ra 3.

# Create a dictionary
my_dict = {'a': 1, 'b': 2, 'c': 3}

# Removes and returns the value associated with the key 'b'
value = my_dict.pop('c')
print(value)

Sử dụng pop() với List

Phương thức pop() được dùng với list để xóa và trả về phần tử được chỉ định từ list đó. Cú pháp cho phương thức pop() với list được hiển thị bên dưới.

list.pop([index])

Khi dùng pop() với list, bạn cần biết rằng nó có thể nhận một tham số tùy chọn để chỉ định chỉ số cần xóa. Nếu không cung cấp tham số, pop() sẽ xóa và trả về phần tử cuối cùng của list.

Nếu bạn chọn chỉ định chỉ số một cách tường minh, hãy lưu ý rằng nếu chỉ số nằm ngoài phạm vi, Python sẽ phát sinh IndexError. Hãy xem các trường hợp sử dụng khác nhau của pop() với list bên dưới.

Dùng pop() để xóa phần tử theo chỉ số

Bạn cũng có thể dùng chỉ số dương hoặc âm làm đối số trong pop() để chỉ định phần tử cần xóa khỏi list. Trong Python, chỉ số dương bắt đầu từ 0 ở đầu list. Chỉ số âm bắt đầu từ -1 ở cuối list.

Các ví dụ sau minh họa ba cách xóa phần tử khỏi list. Trong mỗi trường hợp, kết quả in ra sẽ là 5.

# Create a list
my_list = [1, 2, 3, 4, 5]

# Removes and returns the last element of the list
last_element = my_list.pop()
print(last_element)
# Create a list
my_list = [1, 2, 3, 4, 5]

# Remove specific element using negative index
removed_element = my_list.pop(-1) 
print(removed_element)  
# Create  a list
my_list = [1, 2, 3, 4, 5]

# Remove specific element using negative index
removed_element = my_list.pop(4) 
print(removed_element) 

Dùng pop() để xóa mục khỏi list trong khi lặp

Bạn có thể dùng pop() trong một vòng lặp để duyệt qua list và mỗi lần xóa mục cuối cùng cho đến khi list rỗng. Ví dụ dưới đây cho thấy cách dùng pop() trong vòng lặp. Đoạn mã dưới sẽ in ra List is now empty.

# Create a list
my_list = [1, 2, 3, 4, 5]

# Create a function to remove items from the list
while my_list:
    element = my_list.pop()
    print(f"Removed element: {element}")
print("List is now empty:", my_list)

Kỹ thuật này hữu ích trong nhiều tình huống. Ví dụ, bạn có một danh sách tác vụ cần xử lý lần lượt. Bằng cách dùng pop(), bạn có thể xóa từng tác vụ khi hoàn thành, giúp danh sách luôn tập trung vào những gì còn lại. 

Sử dụng pop() với list lồng nhau

Bạn có thể dùng pop() để xóa phần tử khỏi các list lồng nhau. Phương thức này sẽ xóa và trả về list được chỉ định bên trong list lồng nhau. Đoạn mã sau sẽ in ra [7, 8, 9].

# Define a nested list
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# Pop an element from the outer list
removed_list = nested_list.pop()
print(removed_list)

Nếu bạn muốn xóa một phần tử cụ thể từ list bên trong, trước tiên hãy chỉ định chỉ số của list đó trong list lồng nhau. Đoạn mã dưới in ra 9, là phần tử cuối cùng của list ở chỉ số thứ hai.

# Define a nested list
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# Pop an element from an inner list
removed_element = nested_list[2].pop()
print(removed_element)

Xử lý lỗi pop() index out of range

Khi bạn cố xóa một phần tử ở chỉ số nằm ngoài phạm vi của list, Python sẽ phát sinh IndexError. Để tránh lỗi này, trước tiên cần kiểm tra độ dài list rồi cung cấp chỉ số phù hợp. Bạn cũng có thể dùng khối try-except để bắt lỗi. Đoạn mã dưới sẽ in ra Index out of range cho cả hai trường hợp.

# Create a list
my_list = [1, 2, 3]

# Check length before popping
index = 4

# Ensure the index is within the valid range of the list
if 0 <= index < len(my_list):
    # Removes and returns the element at the specified index
    element = my_list.pop(index)  
    print(f"Popped element: {element}")
else:
    print("Index out of range")
# Create a list
my_list = [1, 2, 3]

# Using try-except block to handle out-of-range index
try:
    # Attempt to remove and return the element at index 5
    element = my_list.pop(5)
except IndexError:
    # Catches the IndexError if the index is out of range
    print("Index out of range")

Sử dụng pop() với Dictionary

Phương thức pop() được dùng với dictionary để xóa một key được chỉ định và trả về giá trị của nó. Cú pháp cho pop() với dictionary được hiển thị bên dưới.

dict.pop(key[, default])

Ta có thể thấy khi dùng với dictionary, pop() yêu cầu truyền vào một key. Phương thức pop() trả về giá trị gắn với key đã chỉ định và xóa cặp key–value đó khỏi dictionary. 

Bạn cũng có thể cung cấp một giá trị mặc định để trả về nếu không tìm thấy key. Nếu key không tồn tại và không có giá trị mặc định, sẽ phát sinh KeyError. Nếu có giá trị mặc định, phương thức sẽ trả về giá trị đó.

Giá trị mặc định trong dictionary Python

Khi dùng pop() với dictionary, bạn có thể cung cấp giá trị mặc định để trả về nếu không tìm thấy key. Cách này thường dùng để tránh KeyError. Đoạn mã dưới in ra Not Found vì key d không có trong tập hợp.

# Create a dictionary
my_dict = {'a': 1, 'b': 2, 'c': 3}

# Remove a specific key and provide default value
value = my_dict.pop('d', 'Not Found')

# Prints the returned value
print(value)

Dùng phương thức pop() với dictionary lồng nhau

Tương tự như với list, bạn có thể dùng pop() để xóa phần tử trong dictionary lồng nhau. Dictionary lồng nhau là dictionary bên trong dictionary. Đoạn mã sau sẽ in ra {'x': 7, 'y': 8, 'z': 9}.

# Define a nested dictionary
nested_dict = {
    'a': {'x': 1, 'y': 2, 'z': 3},
    'b': {'x': 4, 'y': 5, 'z': 6},
    'c': {'x': 7, 'y': 8, 'z': 9}
}

# Pop a key-value pair from the outer dictionary
removed_dict = nested_dict.pop('c')
print(removed_dict)

Bạn cũng có thể xóa một giá trị bên trong từ một dictionary cụ thể trong cấu trúc lồng nhau bằng cách chỉ định key của nó. Đoạn mã dưới in ra 2.

# Define a nested dictionary
nested_dict = {
    'a': {'x': 1, 'y': 2, 'z': 3},
    'b': {'x': 4, 'y': 5, 'z': 6},
    'c': {'x': 7, 'y': 8, 'z': 9}
}

# Pop a key-value pair from an inner dictionary
popped_inner_value = nested_dict['a'].pop('y')
print(popped_inner_value)

Xử lý KeyError trong dictionary Python

Một cách tiếp cận phổ biến khác để xử lý KeyError nhẹ nhàng hơn là dùng khối try-except để bắt lỗi. Ví dụ sau minh họa cách dùng kỹ thuật try-except với phương thức pop().

# Create a dictionary
my_dict = {'a': 1, 'b': 2, 'c': 3}

# Create the try-except block to catch the error
try:
    value = my_dict.pop('d')
except KeyError:
    print("Key not found")

Bạn cũng có thể dùng từ khóa in để kiểm tra một key có tồn tại trong dictionary trước khi xóa nó hay không. Đoạn mã dưới đây dùng cách này và trả về Key not found.

# Create a dictionary
my_dict = {'a': 1, 'b': 2}

# Check key existence before popping
key = 'c'
if key in my_dict:
    value = my_dict.pop(key)
    print(f"Popped value: {value}")
else:
    print("Key not found.")

Cân nhắc về hiệu năng

Trong phần này, chúng ta sẽ xem xét các tác động về hiệu năng khi dùng pop() với list và dictionary.

Các thao tác với list

Độ phức tạp thời gian của các thao tác pop() trong list phụ thuộc vào chỉ số của phần tử bị xóa. Khi bạn dùng pop() không có đối số hoặc với chỉ số -1 để xóa phần tử cuối, thao tác diễn ra trong thời gian O(1) vì nó chỉ xóa phần tử cuối cùng trong list mà không thay đổi các phần tử khác.

Khi chúng ta dùng pop() để xóa phần tử đầu tiên hoặc bất kỳ phần tử nào khác, thao tác có độ phức tạp O(n) vì cần xóa một phần tử và dời các phần tử còn lại sang thứ tự chỉ số mới. Xem thêm hướng dẫn Analyzing Complexity of Code through Python để tìm hiểu thêm về độ phức tạp thời gian trong Python.

Các thao tác với dictionary

Phương thức pop() trong dictionary có hiệu quả rất cao nhờ cấu trúc bảng băm bên dưới. Trong trường hợp này, pop() với dictionary thường là thao tác O(1).

Độ phức tạp này là do dictionary lưu key trong một bảng băm và cần thời gian cho việc chèn, xóa và tra cứu. Ngoài ra, lưu ý rằng bạn luôn phải chỉ định key cần xóa khỏi dictionary khi dùng pop(). Xem thêm hướng dẫn A Guide to Python Hashmaps để tìm hiểu thêm về bảng băm.

Các lựa chọn thay thế cho phương thức pop() của Python

Mặc dù pop() hiệu quả trong việc xóa phần tử khỏi list và dictionary, vẫn có một số lựa chọn thay thế.

Dùng từ khóa del

Từ khóa del được dùng để xóa một mục khỏi list bằng cách chỉ định chỉ số của phần tử. del cũng có thể dùng để xóa các cặp key–value chỉ định khỏi dictionary.  Bạn cần lưu ý rằng dùng del không trả về phần tử đã xóa, khác với pop()

Các ví dụ dưới đây cho thấy cách dùng del để xóa phần tử khỏi list và dictionary. Sau khi xóa phần tử ở chỉ số thứ hai, đoạn mã sau in ra list mới [1, 2, 4, 5].

# Initialize a list with integers from 1 to 5
my_list = [1, 2, 3, 4, 5]

# Remove item at index 2
del my_list[2]
print(my_list)

Đoạn mã sau sẽ in ra {'a': 1, 'c': 3}.

# Create a dictionary
my_dict = {'a': 1, 'b': 2, 'c': 3}

# Remove the key 'b' and its associated value from the dictionary
del my_dict['b']
print(my_dict)

Dùng phương thức remove()

Phương thức remove() chỉ áp dụng cho list khi bạn muốn xóa phần tử theo giá trị chính xác thay vì chỉ số. Phương thức này xóa lần xuất hiện đầu tiên của phần tử được chỉ định nếu nó xuất hiện nhiều lần trong list. Đoạn mã dưới in ra [1, 3, 4, 5].

# Initialize a list with integers from 1 to 5
my_list = [1, 2, 3, 4, 5]

# Remove the element with the value 2 from the list
my_list.remove(2)
print(my_list)

Kết luận

Phương thức pop() là một tính năng đặc biệt đơn giản và linh hoạt trong Python, được dùng để xóa phần tử khỏi list và dictionary, với nhiều ứng dụng thực tế trong lập trình. Phương thức này đặc biệt quan trọng khi xử lý list và dictionary vì nó trả về phần tử đã xóa, thường chính là hành vi bạn cần.

Với vai trò nhà phân tích dữ liệu, tôi khuyến nghị bạn xem các lộ trình kỹ năng Python FundamentalsPython Programming của DataCamp để nâng cao kỹ năng Python phục vụ phân tích dữ liệu. Tôi cũng khuyến khích bạn xem lộ trình nghề nghiệp Data Analyst with Python để tiếp tục xây dựng các kỹ năng thực tiễn, phù hợp công việc.


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Biên tập viên kỹ thuật về Khoa học dữ liệu với kinh nghiệm thực tế trong phân tích dữ liệu, trí tuệ doanh nghiệp và khoa học dữ liệu. Tôi viết nội dung thực tiễn, tập trung vào ngành về SQL, Python, Power BI, Databricks và kỹ thuật dữ liệu, dựa trên công việc phân tích trong thế giới thực. Bài viết của tôi kết nối chiều sâu kỹ thuật với tác động kinh doanh, giúp các chuyên gia chuyển đổi dữ liệu thành những quyết định vững chắc.

Frequently Asked Questions

What does the pop() method do?

Phương thức pop() xóa và trả về một phần tử từ list hoặc dictionary.

What is IndexError in the pop() method?

IndexError xảy ra khi bạn cố xóa phần tử với chỉ số nằm ngoài phạm vi.

What are the alternatives to the pop() method?

Phương thức remove() và từ khóa del là các cách thay thế để xóa phần tử khỏi list hoặc dictionary.

What is the difference between the pop() and remove() methods?

Phương thức pop() xóa và trả về phần tử được chỉ định theo chỉ số từ list hoặc dictionary. Phương thức remove() xóa một phần tử khỏi list hoặc dictionary theo giá trị và không trả về giá trị.

What is the time complexity of the pop() method?

Độ phức tạp thời gian mặc định của pop() là O(1), tức hằng số và hiệu quả.

Can the pop() method be applied to data structures other than lists and dictionaries in Python?

Có, phương thức pop() cũng có thể áp dụng cho set và bytearray trong Python. Với set, set.pop() xóa và trả về một phần tử ngẫu nhiên, vì set là cấu trúc không có thứ tự. Với bytearray, bytearray.pop(index) xóa và trả về phần tử tại chỉ số được chỉ định, tương tự như cách hoạt động với list.

Chủ đề

Học Python cùng DataCamp

Tracks

Lập trình Python

19 giờ
Nâng cao kỹ năng lập trình của quý vị. Học cách tối ưu hóa mã nguồn, viết hàm và kiểm thử, cũng như áp dụng các kỹ thuật công nghệ phần mềm tốt nhất.
Xem chi tiếtRight Arrow
Bắt đầu khóa học
Xem thêmRight Arrow