Đối với danh sách, cả hai phương pháp (in
và index()
) lặp qua danh sách để kiểm tra mục bạn đang tìm kiếm, thật không may. Họ sẽ ngừng lặp lại ngay sau khi kết quả kiểm tra thành viên được biết, có nghĩa là họ sẽ lặp lại đến cuối nếu mục đó không được tìm thấy. Theo như tôi biết, nếu bạn phải làm việc với danh sách, cấu trúc not in
là Python nhất và là một trong những bạn nên đi với (nhưng bạn nên đổ những dấu ngoặc đơn không cần thiết).
Nếu bạn không cần sử dụng danh sách cụ thể, loại có sẵn trong kiểu set có thể hoạt động bình thường. Bộ này là một cấu trúc dữ liệu tương tự như danh sách, nhưng nó sử dụng một thuật toán băm để kiểm tra sự hiện diện của một mục, vì vậy nếu bạn đang làm rất nhiều loại công việc đó, bạn có thể cân nhắc việc chuyển đổi. Đọc các tài liệu tôi đã liên kết với mặc dù, bởi vì các bộ là không có thứ tự, do đó, chúng không hỗ trợ những thứ như cắt hoặc lập chỉ mục.
Có, bạn có thể lên kế hoạch cho những lần mục bạn đang kiểm tra không có trong cấu trúc dữ liệu của bạn. Bạn đang tìm kiếm một Try/Except Block:
example_list = [1,2,3]
try:
index_of_4 = example_list.index(4)
except ValueError:
print("Oops! 4 wasn't in the list!")
Khi bạn biết trường hợp ngoại lệ có thể xảy ra trong chương trình của bạn, bạn có thể quấn mã vi phạm trong một khối như thế này để duyên dáng đón và phục hồi từ ngoại lệ. Nó thực sự là thực hành lập trình tốt để phục hồi từ các lỗi và ngoại lệ như một cách duyên dáng như bạn có thể, ngay cả khi điều đó có nghĩa là chỉ cần in một thông báo lỗi và thoát ra.
minh họa Fun của O (n): '$ for i in 1 2 3 4 5; do python -mtimeit -s "l = range (int (1e $ i))" "(-1) không phải trong l"; xong rồi –