包含列表的递归列表

时间:2015-10-11 06:41:39

标签: python list python-3.x recursion

from random import choice

def Number_recursive(N):
    if N < 0:
        raise ValueError('N must be positive')
    if N == 0:
        return []
    return [choice((0, 1))] + Number_recursive(N-1)

我如何在此列表中添加其他列表 目前它输出让当然随机地将N等于4 [1,0,0,1]

但是我想让它读出一个包含N个列表的列表。目标:

[ [0,1,1,0],[1,0,0,1],[1,0,1,0],[0,0,0,1] ]

2 个答案:

答案 0 :(得分:2)

您可以使用列表推导来创建子列表而不是[choice((0, 1))]。示例 -

from random import choice

def Number_recursive(N,initialN=None):
    initialN = initialN or N
    if N < 0:
        raise ValueError('N must be positive')
    if N == 0:
        return []
    return [[choice((0, 1)) for _ in range(initialN)]] + Number_recursive(N-1,initialN)

演示 -

>>> from random import choice
>>>
>>> def Number_recursive(N,M=None):
...     M = M or N
...     if N < 0:
...         raise ValueError('N must be positive')
...     if N == 0:
...         return []
...     return [[choice((0, 1)) for _ in range(M)]] + Number_recursive(N-1,M)
...
>>> Number_recursive(4)
[[0, 0, 1, 0], [0, 1, 1, 1], [1, 1, 0, 0], [1, 0, 1, 0]]

答案 1 :(得分:1)

你可以尝试这样的事情,希望这有帮助。

from random import choice
N = 4
def Number_recursive(N):
    if N < 0:
        raise ValueError('N must be positive')
    if N == 0:
        return []
    return [choice((0, 1))] + Number_recursive(N-1)

result = []
for i in range(0, N):
    result.append(Number_recursive(N))

print result