gpt4 book ai didi

python - 递归地从元组中删除元素

转载 作者:太空宇宙 更新时间:2023-11-04 00:26:13 26 4
gpt4 key购买 nike

在获得正确结果方面存在一些问题。我试图通过递归传递一个单词元组和一个单词的项目。该方法应返回元组减去项目。但是,我收到一条错误消息,内容为“必须是 str,而不是元组”。这是我到目前为止所拥有的。提前致谢。

def filter_sequence(seq, item):
try:
if not seq:
return ()
elif item is seq[0]:
return filter_sequence(seq[1:], item)
else:
return seq[0] + filter_sequence(seq[1:], item)
except TypeError as e:
print(e)

示例:
如果我调用 filter_sequence(("jelly","butter", "mustard"), 'butter')
我应该收到 ("jelly", "mustard")

的元组我试图将最后一个递归调用包装在 str() 中,但随后我只得到一个字符串。我将不得不拆分和格式化,这不是我想要做的。

我应该提到,我的目标是通过使用内置解决方案(例如 for 循环、while 循环、if x in y... 等)来实现此结果。

最佳答案

最后一个连接应该是一个单例元组,而不是元组中的一个项目——一个字符串。此外,相等性检查足以将元组中的项目与参数匹配,您不需要 is 这里:

def filter_sequence(seq, item):
if not seq:
return ()
elif item == seq[0]:
return filter_sequence(seq[1:], item)
else:
return (seq[0],) + filter_sequence(seq[1:], item)
# ^^^^^^^^^

注意:由于某些 CPython 优化(字符串实习),is 检查可能适用于代码中较小的字符串,但绝对不适用于较大的字符串并且不能保证在 Python 实现中以相同的方式工作。因此,使用==

关于python - 递归地从元组中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47341863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com