所以我试图解决这个问题,它要求我拆分一个字符串,并返回一个拆分字符串的元组,这应该是通过递归完成的,绝对不使用循环。 这是我设法想出的函数:
def split_path(s):
tup=[]
i=s.find("/")
if i!=-1:
tup.append(s[0:i])
new_str=s[i+1:]
tup.append(split_path(new_str))
else:
tup.append(s)
return tup
“E:/cp104/2005/labs/lab11t4”是我放入函数中的字符串,输出应该是:
^{pr2}$但这就是我所拥有的:
['E:', ['cp104', ['2005', ['labs', ['lab11t4']]]]]
所以现在我成功地得到了我需要的字符串中的所有值,我知道问题是我返回了一个元组,所以它只是在一个元组中附加一个元组,所以我的外部元组中只有2个元素。在
那么,我该如何解开内部元素,使最后的元组变成一维元组,而不是现有的5维元组呢?在
您可以使用
extend
代替append
:对于给定程序的最小修复,现有答案是正确的。然而,给定的程序不是很好的递归形式。像这样在内存中显式地构建结果是一种更迭代的习惯用法。在
下面是一个替代版本,它更像是递归样式:
这还返回一个实际的元组,如在问题的文本中,而不是在代码中的列表中。要使其返回一个列表,请将
(something,)
替换为[something]
两次。在执行递归时,将}。由于返回了一个列表,所以需要扩展当前列表,而不是附加另一个内部列表。在
append
更改为{相关问题 更多 >
编程相关推荐