Cách tìm độ dài của danh sách trong Python

Tìm hiểu cách tìm độ dài của danh sách trong Python bằng hàm len(). Hiểu độ phức tạp về thời gian O(1) và số lần kiểm tra.

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

Tổng quan

Biết số lượng phần tử trong một bộ sưu tập là rất quan trọng khi xác thực dữ liệu đầu vào của người dùng, chia dữ liệu thành các phần nhỏ hơn, truy vấn API phân trang hoặc viết vòng lặp lặp. Trong Python, bạn có thể tìm kích thước hoặc độ dài của bất kỳ bộ sưu tập nào bằng cách sử dụng hàm `len()` đơn giản, tích hợp sẵn.

Dưới lớp vỏ bọc, cấu trúc danh sách của Python được triển khai dưới dạng một mảng có độ dài thay đổi. Nó chứa một bộ đếm bên trong theo dõi số phần tử mà nó chứa. Khi bạn gọi `len(my_list)`, Python không duyệt danh sách để đếm các phần tử; nó chỉ đơn giản là đọc bộ đếm nội bộ này. Điều này có nghĩa là độ phức tạp về thời gian của `len()` luôn là O(1) (thời gian không đổi), khiến nó cực kỳ nhanh bất kể kích thước của danh sách.

Hàm `len()` là hàm chung và hoạt động trên mọi đối tượng có thể lặp lại thực hiện phương thức ma thuật `__len__`. Điều này có nghĩa là bạn có thể sử dụng cùng một cú pháp để tìm độ dài của bộ dữ liệu, chuỗi, từ điển, bộ và phiên bản lớp tùy chỉnh, duy trì tính nhất quán rõ ràng trong toàn bộ cơ sở mã của bạn.

Đầu ra mã & thực thi

Tập lệnh này minh họa cách tìm độ dài của danh sách, chuỗi và từ điển bằng hàm len().

empty = []
numbers = [10, 20, 30, 40, 50]
words = ["python", "code", "run"]

# 1. Finding lengths of lists
print("Empty list length:", len(empty))
print("Numbers list length:", len(numbers))

# 2. Finding length of a string
text = "Hello, World!"
print("String length:", len(text))

# 3. Finding length of a dictionary
details = {"id": 1, "name": "Alice"}
print("Dictionary length:", len(details))
Đầu ra thiết bị đầu cuối
Empty list length: 0
Numbers list length: 5
String length: 13
Dictionary length: 2

Triển khai từng bước

  • Gọi hàm len() và truyền biến danh sách làm đối số duy nhất của nó.
  • Lưu trữ số nguyên trả về trong một biến hoặc in/đánh giá trực tiếp.
  • Sử dụng kết quả trong các điều kiện hoặc phép tính toán học (như lập chỉ mục).

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

Tại sao len() lại nhanh như vậy trong Python?

Bởi vì các bộ sưu tập tích hợp của Python lưu trữ số lượng mục của chúng trong nội bộ. Việc gọi len() chỉ đơn giản là đọc trường cấu trúc mà không thực hiện bất kỳ lần lặp nào.

Điều gì xảy ra nếu tôi gọi len() trên một đối tượng lớp tùy chỉnh?

Nó sẽ đưa ra TypeError trừ khi bạn xác định phương thức ma thuật __len__(self) trong định nghĩa lớp tùy chỉnh của mình.

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.