difference between find and index

前端 未结 3 1501
清歌不尽
清歌不尽 2020-12-13 07:57

I am new to python and cannot quite understand the difference between find and index.

>>> line
\'hi, this is ABC oh my god!!\'
>>> line.fi         


        
3条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-13 08:48

    @falsetru provided an explanation about the difference between functions, I did a performance test between them.

    """Performance tests of 'find' and 'index' functions.
    
    Results:
    using_index t = 0.0259 sec
    using_index t = 0.0290 sec
    using_index t = 0.6851 sec
    
    using_find t = 0.0301 sec
    using_find t = 0.0282 sec
    using_find t = 0.6875 sec
    
    Summary:
        Both (find and index) functions have the same performance.
    """
    
    
    def using_index(text: str, find: str) -> str:
        """Returns index position if found otherwise raises ValueError."""
        return text.index(find)
    
    
    def using_find(text: str, find: str) -> str:
        """Returns index position if found otherwise -1."""
        return text.find(find)
    
    
    if __name__ == "__main__":
        from timeit import timeit
    
        texts = [
            "short text to search" * 10,
            "long text to search" * 10000,
            "long_text_with_find_at_the_end" * 10000 + " to long",
        ]
    
        for f in [using_index, using_find]:
            for text in texts:
                t = timeit(stmt="f(text, ' ')", number=10000, globals=globals())
                print(f"{f.__name__} {t = :.4f} sec")
            print()
    

提交回复
热议问题