自动创建列表

时间:2013-11-16 12:03:50

标签: python

我想创建一个代码,我可以自动创建(n)列表数量,而无需逐个创建。 我尝试了这个例子,我希望自动获得五个名为“my_list”的列表,其中每个列表都分配了10个从0到9的数字(例如)。

for i in range(1,6):
    ("my_list_"+str(i)) = []
    for j in range(10):
        ("my_list_"+str(i)).append(j)

消息是:“SyntaxError:无法分配给运算符”

这只是一个例子,真正的问题是如何在不创建列表的情况下自动获取列表。可以用Python做到这一点吗?谢谢

5 个答案:

答案 0 :(得分:1)

处理这种要求的正常,常规方法是将键控列表保存在字典中,而不是带有后缀的变量名称。

my_list=dict()
for i in range(1,6):
    my_list[i] = []
    for j in range(10):
        my_list[i].append(j)

答案 1 :(得分:0)

您可以使用列表推导轻松创建列表列表:

my_lists = [range(10) for _ in xrange(5)]

答案 2 :(得分:0)

您在这里做的是,您正在尝试为字符串分配列表。你不能这样做。 如果您需要创建大量列表,请首先创建另一个列表以存储它们。像这样:

my_lists = []
for i in range(1,6):
    new_list = []
    for j in range(10):
        new_list.append(j)
    my_lists.append(new_list)

如果您不喜欢这样,并希望使用my_list_3这样的变量名称从全局范围访问这些列表,您可以尝试这样的小技巧:

for i in range(1,6):
    globals()["my_list_"+str(i)] = []
    for j in range(10):
        globals()["my_list_"+str(i)].append(j)

print my_list_3

这将打印[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

答案 3 :(得分:0)

使用功能:

>>> auto_list = lambda n: [[] for _ in range(n)]
>>> auto_list(10)
[[], [], [], [], [], [], [], [], [], []]

如果您希望使用随机数生成每个列表:

from random import randint


def auto_list(n):
    return [[randint(0, 100) for _ in range(5)] for _ in range(n)]


print auto_list(10)

返回:

[[86, 33, 82, 28, 20],
 [13, 89, 22, 8, 73],
 [83, 44, 58, 71, 21],
 [66, 54, 41, 24, 8],
 [74, 98, 89, 53, 40],
 [63, 83, 13, 72, 68],
 [51, 55, 61, 36, 34],
 [38, 72, 95, 58, 82],
 [80, 16, 10, 44, 22],
 [9, 65, 84, 14, 91]]

答案 4 :(得分:0)

n = 40
my_lists = []


for i in range(1,40):
    my_lists.append([])

for list in my_lists:
    list.append(3)