递归地从python字符串中删除元素?

时间:2015-12-07 17:31:11

标签: python string recursion

我正在试图弄清楚如何编写一个程序,以递归方式从python字符串中删除给定元素。这是我到目前为止所做的:

def remove(x,s):
    if x == s[0]:
        return ''
    else:
        return s[0] + remove(x,s[1:])

在输入中测试此代码时删除('t','等一下'),它似乎一直工作直到它到达第一个't',但代码然后终止而不是继续通过字符串。有没有人对如何解决这个问题有任何想法?

3 个答案:

答案 0 :(得分:3)

在您的代码中,当您遇到要移除的角色时,会返回'' 这将删除字符串的其余部分。

您希望继续通过字符串(也在递归调用中传递x并添加基本情况):

def remove(x, s):
    if not s:
        return ''
    if x == s[0]:
        return remove(x, s[1:])
    else:
        return s[0] + remove(x, s[1:])

此外,如果您不知道,可以使用str.replace()来实现此目的:

>>> 'wait a minute'.replace('t', '')
'wai a minue'

答案 1 :(得分:0)

def Remove(s,e):
    return filter(lambda x: x!= e, s)

这是您测试的一个例子

sequence = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
RemoveElement = ['d','c']
print(filter(lambda x: x not in RemoveElement, sequence))

#['a', 'b', 'e', 'f', 'g', 'h']

答案 2 :(得分:-1)

如果您只是更换/删除像“' t”这样的字符。你可以使用列表理解:

s = 'wait a minute'
xs = ''.join(x for x in s if x != 't')