数值错误:无法解包足够的值(期望2个,得到0个)

4
我正在尝试使用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)

我不知道为什么会发生这种情况,如果这里的任何人能帮忙解决,我将非常感激。

2
不要使用 list 作为标识符,因为它是一个内置函数。此外,(list,(i))=[] 的预期效果并不是很清晰。 - John Coleman
谢谢John。不幸的是,将list更改为标识符对解决问题没有任何帮助。你提到的这行代码的目的是创建9个不同名称的列表。 - Link
不要创建具有不同名称的列表 - 而是创建具有子列表或字典的列表。 - furas
@Link 这并不是为了解决问题,而是为了修复一个命名错误。 - John Coleman
可能是如何在Python中定义二维数组的重复问题。 - OneCricketeer
3个回答

3
您好,您似乎有一个名为list的变量,想要将其中填充一些列表。但是您的代码无法工作,因为该语法用于从右侧的可迭代对象中提取两个数据块。显然,[]是一个空值,所以您无法从中提取任何东西。
您可以像这样处理它:
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个列表的列表。

谢谢,非常感谢。然而,这并没有完全回答我的问题。你帮我用最少的代码创建了一个列表的列表,这仍然是问题的一部分。但是我需要10个不同名称标识符的列表,每个列表都有一个不同的名称标识符。例如,your_list1,your_list2等。我需要通过循环创建10个这样的列表来创建一个10x10的网格。这样我就可以引用网格中的位置,例如第4个列表的第7项。 - Link
你绝对不应该那样做。 - Mous

0
有时候会发生这种情况,是因为我们在一行中声明并设置了两个对象的值 就像这一行: a,e = []

而不是正确的那行 a,e = [],[]


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(列)


将变量转换为 str 类型后在字典中使用的原因是什么?(而不是显示等价于 {i:[] for i in range(9)} 的内容)? - Jon Clements

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接