2024-04-20 02:33:13 发布
网友
我希望自己创建一个“find”过程我自己,它能够在字符串中查找子字符串,并且应该能够向后读取字符串并给出匹配位置-就像python中最初的find函数一样。在
我不知道我应该使用什么逻辑-而且我也不知道原始的find是如何工作的?在
我刚开始使用python,对编程也相当陌生。在
如有任何指导,我们将不胜感激!在
这个问题有一个简单的解决方案,但是在实现了这个简单的版本之后,您可能希望看到更快的解决方案。你要做的是检查你要搜索的字符串中的每个位置,看看你要搜索的字符串是否从那里开始。这是低效的,但在大多数情况下都能很好地工作,如果您对此感到满意,那么您可能需要看看Boyer-Moore字符串搜索,这是一个更复杂但更高效的解决方案。它利用了这样一个事实:如果一个字符串不是从某个点开始的,那么您可能不需要检查其他一些位置。在
also I don't know how the original find functions
一个不用google就可以学习函数的好方法是使用Ipython,尤其是{a2}。它们允许您以交互方式编写python代码,并具有一些特殊功能。用问号在Ipython(笔记本或解释器)中键入一个函数的名称会返回有关该函数的一些信息,例如
find? Type: function String Form:<function find at 0x2893cf8> File: /usr/lib/pymodules/python2.7/matplotlib/mlab.py Definition: find(condition) Docstring: Return the indices where ravel(condition) is true
键入两个问号将显示源代码
然后你需要进一步深入兔子洞,找出find到底是如何工作的。在
这里是一个返回列表中所有提示的解决方案,并且rfind是使用原始的find关键字backwards定义的。也可以用于整数或浮点。您可以很容易地修改它,以便只返回第一个提示。在
rfind
find
backwards
def find( x, string, backward = False, ignore_case = False ): x = str(x) string = str(string) if ignore_case: x = x.lower() string = string.lower() str_list = [ i for i in string ] x_list = [ i for i in x ] if backward: x_list.reverse() str_list.reverse() x = ''.join(x_list) string = ''.join(str_list) lenx = len(x) ans = [] for i in range( len(str_list) - lenx ): if x == string[i:i+lenx]: ans.append( i ) return ans def rfind( x, string, ignore_case = False): return find( x, string, backward = True, ignore_case = ignore_case ) print find('f','abcdefgacdfh') # [5, 10] print rfind('f','abcdefgacdfh') # [1, 6] print find(12,'aaa3331222aa12a') # [6, 12] print rfind(12,'aaa3331222aa12a') # [1, 7]
这个问题有一个简单的解决方案,但是在实现了这个简单的版本之后,您可能希望看到更快的解决方案。你要做的是检查你要搜索的字符串中的每个位置,看看你要搜索的字符串是否从那里开始。这是低效的,但在大多数情况下都能很好地工作,如果您对此感到满意,那么您可能需要看看Boyer-Moore字符串搜索,这是一个更复杂但更高效的解决方案。它利用了这样一个事实:如果一个字符串不是从某个点开始的,那么您可能不需要检查其他一些位置。在
一个不用google就可以学习函数的好方法是使用Ipython,尤其是{a2}。它们允许您以交互方式编写python代码,并具有一些特殊功能。用问号在Ipython(笔记本或解释器)中键入一个函数的名称会返回有关该函数的一些信息,例如
键入两个问号将显示源代码
^{pr2}$然后你需要进一步深入兔子洞,找出find到底是如何工作的。在
这里是一个返回列表中所有提示的解决方案,并且
rfind
是使用原始的find
关键字backwards
定义的。也可以用于整数或浮点。您可以很容易地修改它,以便只返回第一个提示。在相关问题 更多 >
编程相关推荐