Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中的递归函数期间分配列表_Python_Python 2.7 - Fatal编程技术网

在Python中的递归函数期间分配列表

在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

我需要在递归函数中指定列表的帮助。当递归函数处于第I个迭代中时,如何为列表的第I个成员赋值?

在使用iterable驱动迭代时,不能更改iterable,但可以轻松地使iterable保存结果并将其作为参数传递给递归函数:

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)