繁体   English   中英

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

[英]Assigning a list during recursive function in Python

我需要在递归函数中分配列表的帮助。 当递归函数处于 i 迭代中时,如何为列表的 i 成员分配值?

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

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]

但在此示例中,您无法执行

for item in results:
    recurse (item, results)

我不知道我是否很好地理解了您的问题,但是我认为这有点像:

# 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:] )。 此功能也有点小问题,但这是建议性的。 它适用于我的第一个示例,但是,如果您正在学习递归,则应该学习如何检测和解决常见的递归问题。

出于好奇,这是同一任务的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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM