我试图在python中使用for循环创建列表列表。我的计划是使用两个独立的循环;一个循环创建大列表以放入小列表,另一个循环创建小列表并将它们附加到大列表。
这是用于制作“战舰”型游戏,其中有10x10网格。
这是我遇到困难的代码块:
for i in range(0,10):
(newlist,(i))=[]
此特定代码要完成的唯一任务是创建10个新列表,每个列表具有不同的名称。例如,循环的第一个循环将创建list0
,第二个循环list1
,依此类推,直至list9
。
理论上,我认为这段代码没有错。它也可以在不是创建新列表时使用,而是将字符串放入新变量中。
每当我运行程序时,我都会收到错误
ValueError: not enough values to unpack (expected 2, got 0)
我不知道为什么会这样,如果有人能帮助我,我将非常感激。
答案 0 :(得分:1)
您似乎有一个名为list
的变量,您希望使用某些列表填充该变量。您的代码不起作用,因为此语法用于从右侧的utterable中提取两个数据。显然,[]
为空,因此您可以从中提取 no 。
你可以这样做:
your_list = [list() for x in range(9)]
请注意,您不应该调用变量list
,因为存在一个具有相同名称的内置函数来构造一个空列表。现在变量使得内置无法访问。
编辑: 如果您需要10个列表列表:
your_list = [[[] for x in range(9)] for y in range(10)]
然后,your_list
将是一个包含10个列表列表的列表。
答案 1 :(得分:0)
使用子列表更好地创建列表,因为以后更容易使用,
all_lists = []
for i in range(10):
all_lists.append([])
或更短
all_lists = [ [] for i in range(10) ]
现在您可以使用索引访问列表,即
all_lists[0]
最终创建字典 - 然后您可以使用数字或字符串作为索引
all_lists = {}
for i in range(10):
all_lists[i] = [] # first version
# or
all_lists[str(i)] = [] # second version
或更短
all_lists = { i:[] for i in range(10) } # first version
all_lists = { str(i):[] for i in range(10) } # first version
现在您可以使用数字或字符串访问列表,即
all_lists[0] # first version
# or
all_lists["0"] # second version
编辑以创建10x10网格,您可以使用
grid = [ [None]*10 for _ in range(10) ]
您可以使用不同的值代替None
作为默认值。
要获得位置(x,y)
,您可以使用
grid[y][x]
首先是y
(行),第二个是x
(列)