使用灵活输入创建列表列表(Python)

时间:2017-11-07 04:16:23

标签: python

我目前有一个函数,使用3个嵌套的for循环创建一个列表,如下所示。

[[1,1,1] , [1,1,2] , .... , [3,3,3]]

然而,问题是我不能使用此功能,如果有人想要列表列表是

[[1,1,1,1,1,1,1] , ..... , [9,9,9,9,9,9,9]]

其中包含更多数字(从1到9)和更多元素(1个中的7个而不是4个)。

这是我目前的代码:

def listofList():
    temp = []
    for i in range(1,4):
        for j in range(1,4):
            for k in range(1,4):
                temp.append([i,j,k])
    return temp

有人可以为我提供更好的解决方案吗?我希望我的函数listofList()具有灵活性,它可以接收列表列表大小和列表中元素的输入。

1 个答案:

答案 0 :(得分:2)

尝试以下方法:

def listofList(subLen, totalLen):
    final = [[item for i in range(subLen)] for item in range(1, totalLen+1)]
    return final
>>> listofList(9, 9)
[[1, 1, 1, 1, 1, 1, 1, 1, 1], [2, 2, 2, 2, 2, 2, 2, 2, 2], [3, 3, 3, 3, 3, 3, 3, 3, 3], [4, 4, 4, 4, 4, 4, 4, 4, 4], [5, 5, 5, 5, 5, 5, 5, 5, 5], [6, 6, 6, 6, 6, 6, 6, 6, 6], [7, 7, 7, 7, 7, 7, 7, 7, 7], [8, 8, 8, 8, 8, 8, 8, 8, 8], [9, 9, 9, 9, 9, 9, 9, 9, 9]]
>>> listofList(9, 2)
[[1, 1, 1, 1, 1, 1, 1, 1, 1], [2, 2, 2, 2, 2, 2, 2, 2, 2]]
>>> listofList(2, 9)
[[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9]]
>>>