【问题标题】:ValueError: too many values to unpack (expected 2) when trying to iterate over twolists at the same timeValueError:尝试同时迭代两个列表时,要解包的值太多(预期为 2)
【发布时间】:2021-05-15 15:06:04
【问题描述】:

谁能解释这段代码有什么问题?

for game_name,game_size in games_names,games_sizes:
    print(f'Game_Name = {game_name} Size = {game_size}')

这是 Python 代码,我尝试遍历两个列表并打印它们的值,但它给了我这个错误:

ValueError:解包的值太多(预计 2 个)

【问题讨论】:

  • 您好,请为您的代码使用markdown。

标签: python list


【解决方案1】:

如果你想在同一时刻迭代 2 个列表,你应该使用zip() 函数。

例子:

>>> lol = [1,2,3,4,5]
>>> kek = [6,7,8,9,10]
>>> for num, secnum in zip(lol, kek):
...     print(num, secnum)

让我解释一下为什么你不能“解包”它。 例如,假设我们有这个列表: arr = [1, 2, 3, 4, 5]。每次迭代只能得到 1 个对象,对吧?

one = arr[0]
two = arr[2]
...

这就是我们从列表中获取值的方式。 我们也可以这样赋值:

one, two, three = arr[0], arr[1], arr[2]

在 python 中有* 符号,表示您可以在列表中“打包”值。

colors = ['cyan', 'magenta', 'yellow', 'black']
cyan, magenta, *other = colors

print(cyan)
print(magenta)
print(other)

输出:

cyan
magenta
['yellow', 'black']

总结一下解压的作用:

  1. 解包会将列表的元素分配给多个变量。
  2. 在像 *variable_name 这样的变量前使用星号 (*) 将列表的剩余元素打包到另一个列表中。

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 2019-05-15
    • 2014-07-31
    • 2022-10-20
    • 2021-06-24
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多