使用 enumerate() 时出现“ValueError:需要超过 2 个值才能解压”
Posted
技术标签:
【中文标题】使用 enumerate() 时出现“ValueError:需要超过 2 个值才能解压”【英文标题】:"ValueError: need more than 2 values to unpack" while using enumerate() 【发布时间】:2019-01-19 13:18:50 【问题描述】:我正在尝试使用 zip()
和 enumerate()
遍历由数组对组成的数组的索引和相应元素,但出现以下错误:
a_1 = [1, 2, 3]
a_2 = [11, 22, 33]
a_3 = [111, 222, 333]
b_1 = [5, 6, 7]
b_2 = [55, 66, 77]
b_3 = [555, 666, 777]
for k in range(1, 10):
for index, a, b in enumerate(zip([a_1, a_2, a_3],
[b_1, b_2, b_3])):
print index, a, b
但我收到关于第一行的以下错误:
ValueError: need more than 2 values to unpack
【问题讨论】:
【参考方案1】:enumerate
返回双元组,但是因为您枚举了一个 zip(在您的情况下也返回双元组),所以原始双元组的第二个元素也是双元组。你必须先解包外部元组,然后是内部元组:
for index, (a, b) in enumerate(zip([a_1, a_2, a_3],
[b_1, b_2, b_3])):
【讨论】:
【参考方案2】:您的元组结构为(index, (a, b))
,而不是(index, a, b)
。你需要像那样解压它们。
for index, (a, b) in ...
【讨论】:
以上是关于使用 enumerate() 时出现“ValueError:需要超过 2 个值才能解压”的主要内容,如果未能解决你的问题,请参考以下文章
使用串行插件时出现 Ionic Capacitor Android 错误 - 连接到外部设备时出现 Cordova_not_available