没有isinstance的列表列表上的python递归(不同)

标签 python recursion

我有任意(但统一)数字列表的任意列表。 (它们是 n 空间中 bin 的边界坐标,我想绘制其角,但这并不重要。)我想生成所有可能组合的列表。所以:[[1,2], [3,4],[5,6]] 产生 [[1,3,5],[1,3,6],[1,4,5],[1, 4,6],[2,3,5]...].

谁能帮我改进这段代码?我不喜欢 isinstance() 调用,但是当第一个 arg (pos) 是数字列表而不是列表时,我想不出一种更像 python 的方法来在第一次传递时附加元素列表。

def recurse(pos, vals):
    out = []
    for p in pos:
        pl = p if isinstance(p,list) else [p]
        for x in vals[0]:
            out.append(pl + [x])
    if vals[1:]:
        return recurse(out, vals[1:])
    else:
        return out


a = [[1,2,3],[4,5,6],[7,8,9],[11,12,13]]

b = recurse(a[0], a[1:])

谢谢。

最佳答案

从你的例子看来你想要的只是

from itertools import product
a = [[1,2,3],[4,5,6],[7,8,9],[11,12,13]]
print list(product(*a))

关于没有isinstance的列表列表上的python递归(不同),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5992494/

相关文章:

javascript - AJAX django 获取请求

python - 不同行的正则表达式 - python

python - 当批量大小=1时批量归一化

c - 在 C 中使用递归打印整数数组的反转

javascript - 下面的代码是否递归地使用内存

java - Eclipse 给出关于不返回整数的错误

python - 使用 Scapy 更改数据包 - 在编辑数据包的有效负载后自动更新属性(长度、校验和等)

python - Airflow 调度程序异常停止

javascript - 迭代 JSON 树以递归方式检索父级和子级

sql - Material list 的递归查询