Python 使用find实现rfind

Python 使用find实现rfind,python,Python,我是python新手,我正在尝试使用find实现rfind函数 def rfind_imp(s,t): ss = s fpos = 0 while(True): fpos = s.find(t,fpos) ss=ss[fpos:] if(ss): fpos = fpos +1 else: return fpos

我是python新手,我正在尝试使用find实现rfind函数

def rfind_imp(s,t):
    ss = s
    fpos = 0
    while(True):             
         fpos = s.find(t,fpos)
         ss=ss[fpos:]

         if(ss):    
           fpos = fpos +1    
         else:
           return fpos

print rfind_imp("I saw a donkey,I saw a saw "," ")
print "I saw a donkey,I saw a saw ".rfind(" ")
但我面临的问题是,我将获得第16个字符作为rfind值。有人能帮我找到我犯的错误吗。此外,任何关于使用find更好地实现rfind的建议都应该很有帮助。

可能类似于:

def rfind_imp(s, t):
    fpos = 0
    while(True):
        fpos = s.find(t, fpos)
        if fpos == -1:
            return pfpos
        else:
            pfpos = fpos
            fpos += 1
可能是这样的:

def rfind_imp(s, t):
    fpos = 0
    while(True):
        fpos = s.find(t, fpos)
        if fpos == -1:
            return pfpos
        else:
            pfpos = fpos
            fpos += 1

我认为你的算法应该这样实现:

def rfind_imp(s, t):
    fpos = -1
    while True:
         pos = s.find(t, fpos + 1)
         if pos == -1:
            return fpos
         fpos = pos
另一种算法可能对有大量
t
的字符串更快: (编辑:使其适用于具有多个字符的字符串)


我认为你的算法应该这样实现:

def rfind_imp(s, t):
    fpos = -1
    while True:
         pos = s.find(t, fpos + 1)
         if pos == -1:
            return fpos
         fpos = pos
另一种算法可能对有大量
t
的字符串更快: (编辑:使其适用于具有多个字符的字符串)

您可以尝试
reversed()
函数。您可以尝试
reversed()
函数。