2024-09-29 06:31:13 发布
网友
我试图用递归函数来反转一个列表。不幸的是,我对递归还相当陌生。这可能吗?到目前为止,这是我的代码
def stringRev (word): worLen = len(word) if worLen == 1: return word return (word[-1]) + stringRev(word[:-1]) listWord = ["hey", "there", "jim"] print(stringRev(listWord))
您的问题是(word[-1])是一个字符串,而不是一个列表。所以您正在尝试添加/连接一个字符串和一个列表。我将该表达式改为[word[-1]]以创建一个列表。在
(word[-1])
[word[-1]]
>>> def stringRev (word): ... worLen = len(word) ... if worLen == 1: ... return word ... return [word[-1]] + stringRev(word[:-1]) ... >>> listWord = ["hey", "there", "jim"] >>> print(stringRev(listWord)) ['jim', 'there', 'hey'] >>>
如果包含运行代码时收到的错误,这将很有帮助:TypeError: Can't convert 'list' object to str implicitly
TypeError: Can't convert 'list' object to str implicitly
要反转列表元素的顺序,请更改:
return (word[-1]) + stringRev(word[:-1])
到
(注意方括号)。在
问题是您试图将一个字符串(word[-1])与一个列表(word[:-1])连接起来。在
word[-1]
word[:-1]
<罢工/>
问题是你的函数只需要一个单词,而你却用一个单词列表来调用它。在
如果您按以下方式调用它,您将看到它工作正常:
for word in ["hey", "there", "jim"]: print(stringRev(word))
或者,如果希望在列表中存储反转的字符串:
l = [stringRev(w) for w in ["hey", "there", "jim"]]
函数失败的一个角落是空字符串。我不知道这是否是一个有效的输入,所以它可能不是一个问题(但是修复起来很简单)。在
如果您想用Python完成:
reversed(listWord)
假设单词是一个列表或元组
http://docs.python.org/2/library/functions.html#reversed
为了得到一份名单:
应该行得通
但如果你想要一个算法,我猜反向不是你的朋友!在
您的问题是
(word[-1])
是一个字符串,而不是一个列表。所以您正在尝试添加/连接一个字符串和一个列表。我将该表达式改为[word[-1]]
以创建一个列表。在如果包含运行代码时收到的错误,这将很有帮助:
TypeError: Can't convert 'list' object to str implicitly
要反转列表元素的顺序,请更改:
到
^{pr2}$(注意方括号)。在
问题是您试图将一个字符串(
word[-1]
)与一个列表(word[:-1]
)连接起来。在<罢工/>
问题是你的函数只需要一个单词,而你却用一个单词列表来调用它。在
如果您按以下方式调用它,您将看到它工作正常:
或者,如果希望在列表中存储反转的字符串:
函数失败的一个角落是空字符串。我不知道这是否是一个有效的输入,所以它可能不是一个问题(但是修复起来很简单)。在
如果您想用Python完成:
假设单词是一个列表或元组
http://docs.python.org/2/library/functions.html#reversed
为了得到一份名单:
^{pr2}$应该行得通
但如果你想要一个算法,我猜反向不是你的朋友!在
相关问题 更多 >
编程相关推荐