Cách kiểm tra xem danh sách có trống trong Python hay không (Giá trị chân lý Python)

Tìm hiểu các cách Pythonic nhất để kiểm tra xem danh sách có trống trong Python hay không. So sánh các kiểm tra boolean ngầm với so sánh độ dài.

Hãy thử Giải pháp này trong Trình chỉnh sửa

Tổng quan

Trong quá trình phát triển Python, bạn sẽ thường xuyên cần xác minh xem danh sách có chứa các phần tử hay không trước khi thử đọc, sửa đổi hoặc xử lý nội dung của nó. Việc truy cập các phần tử của danh sách trống bằng dấu ngoặc (ví dụ: `my_list[0]`) sẽ gây ra `IndexError`, làm dừng việc thực thi chương trình. Do đó, việc triển khai các mẫu kiểm tra phòng thủ, sạch sẽ là điều cần thiết để đảm bảo sự ổn định của ứng dụng.

Cách Pythonic nhất để kiểm tra xem danh sách có trống hay không là sử dụng giá trị boolean ngầm định (tính trung thực) của nó. Trong Python, các bộ sưu tập trống (bao gồm danh sách, từ điển, bộ dữ liệu và bộ) đánh giá là `False` trong ngữ cảnh boolean, trong khi các bộ sưu tập được điền sẽ đánh giá là `True`. Viết `if not my_list:` là trực tiếp, dễ đọc và tuân thủ nguyên tắc PEP 8.

Trong khi so sánh độ dài của danh sách với 0 (ví dụ: `if len(my_list) == 0:`) hoặc so sánh trực tiếp danh sách với một danh sách trống (ví dụ: `if my_list == []:`) cũng hoạt động, những cách tiếp cận này thường không được khuyến khích vì chúng kém ngắn gọn hơn và có thể chậm hơn một chút. Việc sử dụng tính năng kiểm tra giá trị thực được tích hợp sẵn của Python giúp mã của bạn sạch hơn và hiệu quả hơn.

Đầu ra mã & thực thi

Tập lệnh này hiển thị các phương thức khác nhau để kiểm tra xem danh sách có trống trong Python hay không.

empty_list = []
full_list = [10, 20, 30]

# Method 1: The Pythonic Way (Implicit boolean check)
if not empty_list:
    print("empty_list is indeed empty!")

if full_list:
    print("full_list has elements inside!")

# Method 2: Length comparison (Less Pythonic, but functional)
if len(empty_list) == 0:
    print("Length of empty_list is 0.")
Đầu ra thiết bị đầu cuối
empty_list is indeed empty!
full_list has elements inside!
Length of empty_list is 0.

Triển khai từng bước

  • Viết if not my_list: để kiểm tra xem danh sách có trống không (hầu hết các cách tiếp cận Pythonic).
  • Viết if my_list: để kiểm tra xem danh sách có chứa một hoặc nhiều phần tử hay không.
  • Tránh sử dụng len(my_list) == 0 hoặc my_list == [] để kiểm tra tính trống rỗng.

Câu hỏi thường gặp

Tại sao 'if not my_list' được ưu tiên hơn 'if len(my_list) == 0'?

Nó dễ đọc hơn, dễ hiểu hơn và nhanh hơn một chút vì nó tránh được việc gọi hàm len() tra cứu và so sánh số nguyên.

Tính năng kiểm tra này có hoạt động với các bộ sưu tập khác như từ điển hoặc bộ dữ liệu không?

Có, quy tắc xác thực tương tự cũng áp dụng cho các ký tự trống ({}), bộ dữ liệu trống (()), tập hợp trống (set()) và chuỗi trống ("").

Chủ đề liên quan

Tài nguyên Python được đề xuất

Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.