Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Viết hàm len() tùy chỉnh (Custom len) trong Python


Triển khai thủ công hàm len() để hiểu cơ chế đếm phần tử của iterable.

Thuật toán

  1. Nhận iterator (string, list, tuple...).
  2. Khởi tạo count = 0.
  3. Duyệt qua từng phần tử: count += 1.
  4. Trả về count.

Code

def my_len(iterator):
    count = 0
    for _ in iterator:
        count += 1
    return count

if __name__ == "__main__":
    user_input = input("Nhập chuỗi: ")
    print(f"Độ dài '{user_input}' là {my_len(user_input)}")

Kết quả mẫu

Nhập chuỗi: tutorialspoint
Độ dài 'tutorialspoint' là 14

So sánh với built-in len()

Đặc điểmlen() built-inCustom my_len()
Cơ chếGọi __len__() (C-level, O(1))Duyệt iterator (O(n))
Hiệu năngCực nhanhChậm (Python loop)
Đối tượng hỗ trợCollection có __len__Mọi iterable (kể cả generator)

Lưu ý

  • Built-in len() chỉ hoạt động với object có __len__ (list, tuple, str, dict, set...).
  • Generator/iterator không có __len__ → TypeError. Custom function vẫn đếm được.
  • Trong thực tế luôn dùng built-in len(). Custom chỉ để học tập.

Kết luận

Custom len() đơn giản là vòng lặp đếm. Built-in len() tối ưu O(1) nhờ __len__ protocol. Hiểu cơ chế giúp thiết kế class đúng khi implement __len__.