对于带有2个变量的Loop,但只想枚举其中1个

时间:2019-11-01 18:32:08

标签: python python-3.x matplotlib

在Python 3中,我想对两个变量进行For循环,但仅对第一个使用enumerate函数。看起来像这样:

for no, (r, j) in enumerate(all_accepted_results), all_accepted_accuracies:
    plt.plot(r, label = 'Forecast #%d - Accuracy %f'%(no + 1, all_accepted_accuracies[j] ))

其中no是枚举函数中的数字,r是图表上绘制的列表all_accepted_results中的实际值,而j将是是列表all_accepted_accuracies中的实际值,该列表作为标签添加到图例中。

现在我收到错误:

ValueError: too many values to unpack (expected 2)

我也尝试过:

for no, r, j in enumerate(all_accepted_results), all_accepted_accuracies:

...并收到与上述相同的错误,只有“(预期3)”,并且还尝试过:

for no, (r, j) in enumerate(all_accepted_results, all_accepted_accuracies):

...这让我出错了:

TypeError: 'list' object cannot be interpreted as an integer

所以我不知所措。显然,我只是想从上方绘制r值,并在图例中说明它是哪个预测号及其相应的准确度数。

我将很快去工作,但是如果有人对我有任何想法,我将在这里重新访问。谢谢!

1 个答案:

答案 0 :(得分:3)

您可以全部zip

for (no, r), j in zip(enumerate(all_accepted_results), all_accepted_accuracies):

请注意,它是(no, r), j,而不是no, (r, j),因为enumerate会产生类似(no, r)的元组,不是仅是连续整数{{1 }}。

您的代码:

no

...基本上与此相同:

for ... in enumerate(all_accepted_results), all_accepted_accuracies:

>>> for a in 1,2,3,4,5: ... print(a) ... 1 2 3 4 5 >>> 之后的部分实际上是一个 tuple ,在您的情况下,它包含两个元素:in对象和enumerate,因此您将最终遍历这两个对象。