我想创建一个代码,我可以自动创建(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做到这一点吗?谢谢
答案 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)