我正在试图弄清楚如何编写一个程序,以递归方式从python字符串中删除给定元素。这是我到目前为止所做的:
def remove(x,s):
if x == s[0]:
return ''
else:
return s[0] + remove(x,s[1:])
在输入中测试此代码时删除('t','等一下'),它似乎一直工作直到它到达第一个't',但代码然后终止而不是继续通过字符串。有没有人对如何解决这个问题有任何想法?
答案 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')