将返回的元素连接到递归函数中的列表

杰克姆达利

这个让我头疼太久了

我正在尝试从递归中创建一个元组列表,但我无法弄清楚我如何处理它是否会起作用。下面, foo() 和 A 是更复杂的方法和结构的别名,但我希望下面的 foo() 返回以下内容:

[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), ( 8, 8)]

第一次尝试

当我尝试将它们作为列表添加在一起时,它会嵌套所有列表。

A = [(num, num) for num in np.arange(9)]
def foo(A):

    if len(A)==1:
        return(A[0])
    else:
        return([A[0]] + [foo(A[1:])])
print(foo(A))

输出:[(0, 0), [(1, 1), [(2, 2), [(3, 3), [(4, 4), [(5, 5), [(6, 6)] , [(7, 7), (8, 8)]]]]]]]]

第二次尝试

我可以理解为什么这是错误的,所以我尝试将返回的值附加到更高级别的列表中,但没有任何返回:

A = [(num, num) for num in np.arange(9)]
def foo(A):

    if len(A)==1:
        return(A[0])
    else:
        return([A[0]].append(foo(A[1:])))
print(foo(A))

输出:无

当前的解决方案(必须有更好的方法)

def foo(A):

    if len(A)==1:
        return(A[0])
    else:
        return(A[0] + foo(A[1:]))

输出: (0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8)

...然后:

temp = np.array(foo(A)).reshape(-1,2)
output = [tuple(temp[i, :]) for i in range(np.shape(temp)[0])]
print(output)

这给出了所需的输出......有人可以就如何使用递归正确地做到这一点提出一些建议吗?

兰登

您几乎在第一次尝试时就拥有了它。通过添加拆包​​和更改您的原始基本案例,我们可以获得您想要的结果。

def foo(A):

    if len(A)==1:
        return([A[0]])
    else:
        return([A[0]] + [*foo(A[1:])])
print(foo(A))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将一个函数的列表连接到 OCaml 中的另一个递归函数

将列表元素连接到 R 中的 date.frame

使用Python中的单元素将列表的分组元素连接到一个列表中

在递归函数中返回列表列表

将递归函数的结果连接到Javascript数组中的最快方法是什么?

将函数映射到列表列表并将结果连接到列表中

使用Scala将字符串连接到Spark数据框中的列表的每个元素

将元素数量不相等的两个列表连接到字典中

将字符串连接到python中列表的所有元素的末尾

将列表的元素连接到R中新列中的特定格式

如何将单个元素连接到Python中的字符串列表

在python中将多个列表元素连接到单个列表中

postgresql:如何将函数返回的单行连接到表中

如何使用递归函数将元素插入列表,然后在 Ocaml 中打印

将字符串连接到列表的每个元素

如何将列表项连接到div元素JavaScript

递归地将函数应用于列表元素

将列表中除第一个元素外的所有元素连接到字符串

如何将两个列表中的每个元素连接到一个新列表?

使用.innerHTML将数字列表连接到列表中

在将列表连接到列表框中获取StackOverflowException

提取列表元素并连接到r中的字符串

递归函数lisp返回列表

递归返回列表t中的最小元素

返回未定义数组中随机元素的递归函数

如何在python的递归函数中增长和返回列表

将数字连接到 Python 中的文本列表中

将数组中的元素连接到字符串

将数组的元素连接到字符串中