将字符串嵌套在列表中n次,即列表列表

时间:2016-10-17 09:39:06

标签: python list python-2.7 nested

def nest(x, n):
    a = []
    for i in range(n):
        a.append([x])
    return a

print nest("hello", 5)

这给出了输出

[['hello'], ['hello'], ['hello'], ['hello'], ['hello']]

所需的输出是

[[[[["hello"]]]]]

3 个答案:

答案 0 :(得分:5)

您要添加到列表中的循环每转一圈。您希望进一步嵌套列表,而不是在其上添加更多内容。你可以这样做:

def nest(x, n):
    for _ in range(n):
        x = [x]
    return x

每次转过循环,x都会有另一个列表。

答案 1 :(得分:2)

而不是附加你应该包裹x并递归调用该方法,直到电话号码小于n

def nest(x, n):
    if n <= 0:
        return x
    else:
        return [nest(x, n-1)]

答案 2 :(得分:1)

这是一种pythonic递归方法:

In [8]: def nest(x, n):
   ...:     return nest([x], n-1) if n else x 

样本:

In [9]: nest(3, 4)
Out[9]: [[[[3]]]]

In [11]: nest("Stackoverflow", 7)
Out[11]: [[[[[[['Stackoverflow']]]]]]]