在Python中的递归函数期间分配列表
我需要在递归函数中指定列表的帮助。当递归函数处于第I个迭代中时,如何为列表的第I个成员赋值?在使用iterable驱动迭代时,不能更改iterable,但可以轻松地使iterable保存结果并将其作为参数传递给递归函数:在Python中的递归函数期间分配列表,python,python-2.7,Python,Python 2.7,我需要在递归函数中指定列表的帮助。当递归函数处于第I个迭代中时,如何为列表的第I个成员赋值?在使用iterable驱动迭代时,不能更改iterable,但可以轻松地使iterable保存结果并将其作为参数传递给递归函数: results = [] def recurse(level, results): level += 1 results.append(level) if level < 10: recurse(level, results) print recur
results = []
def recurse(level, results):
level += 1
results.append(level)
if level < 10: recurse(level, results)
print recurse(0, results)
>>> [1,2,3,4,5,6,7,8,9,10]
我不知道我是否很理解你的问题,但我认为它是这样的:
# put "s" on 2nd position of the list ['l', 'u', 'c', 'a', 's']
# so the result should be ['l', 's', 'c', 'a', 's']
如果是这样的话,请记住在Python中有更好的方法。下面是代码:
def assign_in_position(elem, my_list, pos):
first = my_list[0]
tail = my_list[1:]
if pos == 0:
return [elem] + tail
return [first] + assign_in_position(elem, tail, pos-1)
如果您是Python新手,那么只有一件事情可能会很奇怪(切片,my_list[1://code>)。这个函数也是一种错误,但它是建议的。它适用于我的第一个示例,但是如果您正在学习递归,那么您应该学习如何检测和解决常见的递归问题
出于好奇,这是相同任务的Haskell代码:
assign_in_pos elem [] _ = [elem]
assign_in_pos elem (_:t) 0 = elem:t
assign_in_pos elem (h:t) pos = h:assign_in_pos elem t (pos-1)
您需要将其作为函数参数传递。您需要类似于我们在中制作的东西吗,例如Haskell?你的问题能说得更清楚些吗?我认为递归在Python word中并不流行(特别是在我们讨论列表时)。
assign_in_pos elem [] _ = [elem]
assign_in_pos elem (_:t) 0 = elem:t
assign_in_pos elem (h:t) pos = h:assign_in_pos elem t (pos-1)