【问题标题】:'ValueError: not enough values to unpack (expected 2, got 0)''ValueError:没有足够的值来解包(预期 2,得到 0)'
【发布时间】:2023-03-20 15:10:01
【问题描述】:

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

我不知道为什么会这样,如果有人能帮助我,我将不胜感激。

【问题讨论】:

  • 不要使用list 作为标识符——它是内置的。此外,您希望 (list,(i))=[] 完成什么也不是很清楚。
  • 谢谢约翰。不幸的是,将列表更改为标识符并不能解决问题。您提到的代码行的目的是创建 9 个不同的列表,每个列表都有不同的名称。
  • 不要创建具有不同名称的列表 - 使用子列表或字典创建列表。
  • @Link 这并不是为了解决问题——而是为了解决命名错误。

标签: python


【解决方案1】:

您似乎有一个名为list 的变量,您想用一些列表填充它。您的代码不起作用,因为此语法用于从右侧的话语中提取两条数据。显然,[] 是空的,因此您可以从中提取 nothing

你可以这样做:

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。
【解决方案2】:

最好用子列表创建列表,因为以后更容易使用,

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)} 的等价物)?
猜你喜欢
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2017-09-14
  • 1970-01-01
  • 1970-01-01
  • 2020-09-28
  • 2019-01-05
  • 2018-04-21
相关资源
最近更新 更多