Tôi đã tự hỏi nếu phương pháp 'tìm' trên chuỗi được thực hiện với một tìm kiếm tuyến tính, hoặc nếu python đã làm một cái gì đó phức tạp hơn. Tài liệu Python không thảo luận chi tiết triển khai, vì vậy http://docs.python.org/library/stdtypes.html không giúp được gì. Ai đó có thể vui lòng chỉ cho tôi mã nguồn có liên quan không?Chuỗi string.find được triển khai như thế nào trong CPython?
8
A
Trả lời
16
4
Bạn sẽ có thể tìm thấy nó trong Objects/stringlib/find.h, mặc dù mã thực sự là trong fastsearch.h.
1
Có vẻ như thuật toán được sử dụng bắt nguồn từ Boyer-Moore-Horspool algorithm
Các vấn đề liên quan
- 1. Máy phát điện và coroutines được triển khai như thế nào trong CPython?
- 2. HttpSession được triển khai như thế nào?
- 3. OpenID được triển khai như thế nào?
- 4. Các mảng được triển khai trong Perl như thế nào?
- 5. Các mảng được triển khai trong java như thế nào?
- 6. Máy tính Google được triển khai như thế nào?
- 7. GMail triển khai Comet như thế nào?
- 8. Các khối try/catch được triển khai như thế nào?
- 9. Atan2 được triển khai bằng .NET như thế nào?
- 10. Thuộc tính phụ thuộc được triển khai như thế nào?
- 11. Các tham chiếu yếu được triển khai như thế nào?
- 12. C# Generics được triển khai như thế nào?
- 13. Arrays.sort (Object [] a) - được triển khai như thế nào?
- 14. IO không chặn được triển khai như thế nào?
- 15. Bản đồ băm JavaScript được triển khai như thế nào?
- 16. GetHashCode() được triển khai cho Int32 như thế nào?
- 17. Facebook Chat Heads được triển khai như thế nào?
- 18. Phạm vi Lexical được triển khai như thế nào?
- 19. LLVM isa <> được triển khai như thế nào?
- 20. Các mutex được triển khai như thế nào?
- 21. Các ứng dụng Java được triển khai như thế nào trong "thế giới thực"?
- 22. Hồ sơ luồng sẽ được triển khai như thế nào trong C?
- 23. Tùy chọn BarSpacing thực sự được triển khai như thế nào trong Mathematica?
- 24. Giao diện java được triển khai bên trong như thế nào? (vtables?)
- 25. Bạn sẽ triển khai đuôi hiệu quả như thế nào?
- 26. Forth triển khai từ điển như thế nào? (tranh cãi)
- 27. Từ khóa java được đồng bộ hóa được triển khai như thế nào?
- 28. Các cụm từ thông dụng được triển khai như thế nào trong .NET?
- 29. Mẫu Memento được triển khai như thế nào trong C# 4?
- 30. Cách đối sánh mẫu trong Scala được triển khai ở cấp độ bytecode như thế nào?
liên kết chết. ai đó có thể cập nhật nó? – TheTrowser